go-学习

文章目录

简介

Go 语言的基础组成有以下几个部分:

1.包声明

2.引入包

3.函数

4.变量

5.语句 & 表达式

6.注释

go 复制代码
package main
import "fmt"

func main() {
   /* 这是我的第一个简单的程序 */
   fmt.Println("Hello, World!")
}
/*func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,
一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)*/

标识符

变量命名,

不能以数字开头;不能出现关键字;不能出现运算符;

字符串的拼接,

"+",与java等语言相同

关键字

type,case,break,default,func,interface

数据类型

布尔类型:var b bool = true

数字类型:uint8,uint16,uint32,uint64,int8,float32,complex64

字符串类型

派生类型:

(a) 指针类型(Pointer)

(b) 数组类型

© 结构化类型(struct)

(d) Channel 类型

(e) 函数类型

(f) 切片类型

(g) 接口类型(interface)

(h) Map 类型

声明变量

1,指定变量类型,如果没有初始化,则变量默认为零值

go 复制代码
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var a string = "Runoob"
var b, c int = 1, 2
var b int		//默认变量为0

2,根据值自行判定变量类型

go 复制代码
var v_name = value
var d = true

3,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误

go 复制代码
//这种不带声明格式的只能在函数体中出现
f := "Runoob" // var f string = "Runoob"

var intVal int 
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句

注意问题:

如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。

_,numb,strs := numbers() //只获取函数返回值的后两个

常量

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

go 复制代码
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"

多个相同类型的声明可以简写为:

go 复制代码
const a, b, c = 1, false, "str" //多重赋值

常量还可以用作枚举:

go 复制代码
const (
    Unknown = 0
    Female = 1
    Male = 2
)

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

go 复制代码
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

go 复制代码
const (
    a = iota
    b = iota
    c = iota
)

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2

可以简写为如下形式:

go 复制代码
const (
    a = iota
    b
    c
)

实战

go 复制代码
const (
        a = iota   //0
        b          //1
        c          //2
        d = "ha"   //d="ha",iota += 1
        e          //e="ha"   iota += 1
        f = 100    //f=100,iota +=1
        g          //g=100  iota +=1
        h = iota   //h=7,恢复计数
        i          //i=8
)
go 复制代码
const (
    i=1<<iota
    j=3<<iota
    k
    l
)
iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。
简单表述:
i=1:左移 0 位,不变仍为 1;
j=3:左移 1 位,变为二进制 110, 即 6;
k=3:左移 2 位,变为二进制 1100, 即 12;
l=3:左移 3 位,变为二进制 11000,即 24。

算术运算符

加 + ,减 - ,乘 *,除 /,余%,自增++,自减--

关系运算符

等于:==,不等于:!=,大于:>,小于:<,大于等于:>=,小于等于:<=

逻辑运算符

&&

||

!

逻辑运算符没有&和 |

位运算

&,|,^,<<,>>

赋值运算符

+=,<<=

其他运算符

&a; 将给出变量的实际地址。

*a; 是一个指针变量

相关推荐
呆萌很6 小时前
【GO】结构体构造函数练习题
golang
codeejun11 小时前
每日一Go-44、Go网络栈深度拆解--从 TCP 到 HTTP 的资源复用艺术
网络·tcp/ip·golang
GDAL12 小时前
Go Channel `close()` 深入全面讲解
golang·通道·close
Tomhex14 小时前
Golang内置函数总结
golang·go
XMYX-014 小时前
05 - Go 的循环与判断:语法、用法与最佳实践
开发语言·golang
被摘下的星星15 小时前
Go赋值操作的关键细节
开发语言·golang
喵了几个咪16 小时前
Go 语言 CMS 横评:风行 GoWind 对比传统 PHP/Java CMS 核心优势
java·golang·php
喵了几个咪16 小时前
Headless 架构优势:内容与展示解耦,一套 API 打通全端生态
vue.js·架构·golang·cms·react·taro·headless
Wenweno0o2 天前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
咬_咬2 天前
go语言学习(基本数据类型)
开发语言·学习·golang·数据类型