学go第一天

go的环境配置

1
2
3
4
5
6
7
8
9
- 1.golang下载(https://studygolang.com/dl)
- 2.环境变量配置
GOROOT:Go 安装后的根目录(例如:D:\Go),安装过程中会由安装程序自动写入系统环境变量中。
GOBIN:Go 的二进制文件存放目录(%GOROOT%\bin)
PATH:需要将 %GOBIN% 加在 PATH 变量的最后,方便在命令行下运行。
-3.Go 工作空间
GOPATH :Go 的工作空间,就是我们的开发和依赖包的目录,例如(D:\abc\GO)
注意:不要把 GOPATH 设置成 Go 的安装路径
-配置好之后,通过 go env 命令来查看go环境是否配置正确,如下图

图片

Hello World

1
2
3
4
5
6
package main
import "fmt"
//入口函数main()
func main() {
fmt.Println("Hello World!")
}

将上面的程序保存成 helloworld.go,然后在文件地址栏输入cmd回车执行或者可以右键Git bash执行:
go run helloworld.go
运行结果

图片

Golang标准库文档(https://studygolang.com/pkgdoc)


golang数据类型

数据类型作用:告诉编译器这个变量应该占用多大内存
数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

  • 整型
    uint8:      无符号 8 位整型 (0 到 255)
    uint16:     无符号 16 位整型 (0 到 65535)
    uint32:     无符号 32 位整型 (0 到 4294967295)
    uint64:     无符号 64 位整型 (0 到 18446744073709551615)
    int8:         有符号 8 位整型 (-128 到 127)
    int16:        有符号 16 位整型 (-32768 到 32767)
    int32:         有符号 32 位整型 (-2147483648 到 2147483647)
    int64:         有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
  • 浮点型
    float32:       IEEE-754 32位浮点型数
    float64:       IEEE-754 64位浮点型数
    complex64:     32 位实数和虚数
    complex128:  64 位实数和虚数

变量命名规范

- 1)字母,下划线,数字
- 2)不能以数字开头
- 3)不能以关键字命名
- 4)要区分大小写

变量声明

变量,程序运行期间可以改变的量,关键字var

1
2
3
4
5
6
//var(关键字) a(变量名) int(变量类型) 
//var(关键字) a(变量名),b(变量名) int(变量类型)
//根据赋值自动推导变量类型,注同一个变量只能使用一次
c := 30
//打印变量c类型的函数
fmt.Printf("c type is %T\n",c)

注:变量声明之后必须引用,不然会报错

Println和Printf的区别

一个小例子

1
2
3
4
5
6
7
package main
import "fmt"
func main() {
a,b,c :=10,20,30
fmt.Println("a=",a,",b=",b,"c=",c)
fmt.Printf("a= %d,b= %d,c= %d\n",a,b,c)
}

运行结果都是a= 10 ,b= 20 c= 30但明显用Printf格式更好控制

多重赋值和匿名变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//a:=10 b:=20 c:=30
`a,b,c :=10,20,30`
//交换a,b变量的值
//传统方式
c=a
a=b
b=c
//go的方式
a,b,c=c,b,a
//_匿名变量,丢弃不处理,_匿名变量配合函数返回值使用,才有优势(go函数可以返回多个值)
func test()(a,b,c int) {
return 1,2,3
}
func main() {
var e,f,g int
e,f,g=test()
fmt.Printf("e= %d,f= %d,g= %d\n",e,f,g)
//如果不想要2,可以用匿名变量把2替换掉
e,_,g=test()
fmt.Printf("e= %d,f= %d,g= %d\n",e,f,g)
}

常量

常量在程序运行期间不可改变,关键字const
常量声明以后不可以再赋值
常量的类型推导

1
2
const a =10.2
fmt.Printf("a=%T/n",a)

多个变量/常量的定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
import "fmt"
func main() {
var (
a int
b float64
c string
)
a,b,c=10,10.1,"20"
fmt.Println(a,b,c)
const (
//类型可以省略
i int=10
j float64=10.23
)
fmt.Println(i,j)
}

枚举iota

  • iota常量自动生成器,每换一行自动加1
  • iota给常量赋值
  • iota遇到const重置为0
  • 可以只写一个iota
  • 如果是同一行,值都一样
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    func main()  {
    const (
    a=iota //0
    b=iota //1
    c=iota //2
    )
    fmt.Println(a,b,c)
    const d=iota //0
    fmt.Println(d)
    const (
    a1=iota //0
    b1 //1
    c1 //2
    )
    fmt.Println(a1,b1,c1)
    const (
    i=iota //0
    j1,j2,j3=iota,iota,iota //1
    k=iota //2
    )
    fmt.Println(i,j1,j2,j3,k)
    }

基本类型

  • bool 布尔类型 初始为false 长度1
  • byte 字节型 初始为0 长度1=uint8
  • rune 字符类型 0 长度4=uint32
  • int uint 整型 0 长度4/8 (uint表示无符号)
  • int8,uint8 整型 0 长度1
  • int16,uint16 整型 0 长度2
  • int32,uint32 整型 0 长度4
  • int64,uint64 整型 0 长度8
  • float32 浮点型 长度4
  • float64 浮点型 长度8
  • complex64 复数类型 长度8 (10+20i) 不常用
  • complex128 复数类型 长度16
  • uintptr 整型 长度4或8
  • string 字符串 utf-8字符串

复数类型

1
2
3
4
5
6
7
8
9
10
11
package main
import "fmt"
func main(){
var t complex64 //声明
t=2.1+3.14i //赋值
fmt.Println(t)
t1:=2.1+3.14i
fmt.Printf("t= %T\n",t1)
fmt.Println(real(t1)) //实部
fmt.Println(imag(t1)) //虚部
}
-------------本文结束❤️感谢您的阅读-------------
ボ wechat
扫描二维码,可获得菜鸡一枚
打赏测试
0%