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 包下的函数,如果大写字母开头,表示导出(可以给外部包使用),如果小写表示,只能给包内部使用
 */

posted @ 2019-08-15 14:39  zx125  阅读(141)  评论(0编辑  收藏  举报