go入门
go入门
go
go是强类型,编译型的语言
go开发环境
环境变量 | 说明 |
---|---|
GOROOT | 指定go的SDK安装目录 |
Path | 添加SDK的/bin目录 |
GOPATH | 工作目录,将来我们的go项目的工作路径,不然不能执行 |
#可以通过命令go env查看是否配置正确
如果没有设置GOPATH
windows下修改:
set GOPATH=路径
set GOROOT=路径
GOPATH
GOPATH的工作区包含bin,src,和pkg这三个:
src——源码(包含第三方的和自己项目的)
bin——编译生成的可执行程序
pkg——编译时生成的对象文件
go代码的执行
go文件执行常见的两种方式
1.go build
生成二进制可执行文件.exe,但是需要手动运行exe文件
2.go run
还是会编译的,不过不会生成.exe文件(直接编译运行),而且是一次性执行
1.exe文件会比较大,会把执行所需要的相应的文件打包进去(编译器会讲程序运行依赖的库文件包含在可执行文件中),然后它可以在没有go运行环境的电脑运行
其他用法
go build -o zx.exe hello.go 自定义生成exe名字
2.hello.go在没有go环境的电脑上无法运行
go语言注意事项
1.go语言定义的变量或者import的包如果没有使用到,代码就不能编译通过
2.go用包名调用函数
go中文网站
https://github.com/golang/go/wiki/NonEnglish
注释
单行注//
多行注释
/*
*/
go变量(静态)
package main
import "fmt"
func main() {
//申明变量
var zx int
//变量赋值
zx=10
//输出变量
fmt.Println(zx)
}
10
变量使用的三种方式
1.指定变量类型,声明后不赋值,使用默认值(int的默认值0)
var zx int
fmt.Println(zx)
0
2.根据值自行判定变量的类型(类型推导)
var zx1="dsa"
fmt.Println(zx1)
dsa
3.省略var,注意:=左侧的变量不应该是已经声明过的,否则编译错误
zx2:=20
fmt.Println(zx2)
20
多变量的赋值
var zx1,zx2,zx3 int
fmt.Println(zx1,zx2,zx3)
0 0 0
var zx1,zx2,zx3=100,"asdas",77
fmt.Println(zx1,zx2,zx3)
100 asdas 77
zx1,zx2,zx3:=100,"asdas",77
fmt.Println(zx1,zx2,zx3)
100 asdas 77
var(
zx1="haa"
zx2="lala"
zx3=12
)
fmt.Println(zx1,zx2,zx3)
haa lala 12
go基本数据类型
数字
-int(整数,含正负)
-int,int8,int16,int32,int64:占得大小不一样,
-int在32位机器上是int32,64位机器上是int64
-int8表示占一个字节(8个比特位)表示的范围是:正负2的7次方-1
-int16表示占两个字节(16个比特位)表示的范围是:正负2的15次方-1
-uint(正整数)
-uint,uint8 uint16 uint32 uint64
-uint在32位机器上是uint32,64位机器上是uint64
-表示范围不一样uint8:2的8次方-1
-float
-float64和float32 :表示小数点后范围不一样(,没有float)
-complex64(复数:科学运算用得到,开发中,基本不用)了解
-有实部和虚部
-byte
-uint8的别名
-rune
-int32的别名
布尔(bool)
-真:true
-假:false
字符串
-双引号包裹的:"xxx"
-反引号包裹,可以换行, 没有单引号,三引号
常量
//程序运行期间不允许修改
//数据库,redis连接
//const关键字 常量名 =常量值 赋值一次,不允许修改
//const NAME = "lqz"
//const NAME string = "lqz"
函数
go没有关键字参数一说,都按位置传,也没有默认参数
//如果有个值不想接收,用_占位,但是不能全部为_,会报错
_,a,_:=test(3,4)
#定义(没有先定义再使用这一说)
//func关键字 函数名(参数1 参数类型,参数2 参数类型)(){
//函数体的内容
//}
#无参函数
//func test() {
// fmt.Println("我是test")
//}
/#带参函数
//func test(a int,b int,c string) {
// fmt.Println(a+b)
// fmt.Println(c)
//}
#带参函数2
//func test(a ,b int,c string) {
// fmt.Println(a+b)
// fmt.Println(c)
//}
#返回指定类型函数
//func test(a,b int) int {
// //返回a+b的结果
// return a+b
//}
#返回多个值
//func test(a,b int) (int,int,string) {
// //返回a+b的结果
// return a+b,a*b,"ok"
//}
#不定长函数
//func test(z ...int) {
// fmt.Println(z)
//}
包
//包的使用
package main
import (
"fmt"
"zx/package_test"
)
func main() {
fmt.Println("xxx")
package_test.Test()
}
/*1 你写的所有包必须在gopath的src路径下
包名一般是文件夹的名字,可以看package名
在外部包可以直接调用, 包名.方法名()
2 包下的函数,如果大写字母开头,表示导出(可以给外部包使用),如果小写表示,只能给包内部使用
*/