不配置也没有什么大的影响,只是不方便编译罢了
export GOPATH=/Users/admin/Desktop/Go_project #为你go语言的工程目录
export GOROOT=/Usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
自行百度咯
package main
import "fmt"
func main() {
fmt.Println("HelloWorld")
//没有分号
}
package main定义了包名
import “fmt” 告诉Go编译器导入fmt包,fmt包实现格式化IO
func main() 程序入口,每个可执行程序必须包含
如果打算将多个语句在写统一行,则必须使用 分号’;’,反正不鼓励这种写法
命令行中使用 go run 01_HelloWorld.go 命令,执行文件
命令行中使用 go build 01_HelloWorld.go 命令,编译出 01_HelloWorld 文件,再运行该文件
Go语言中,使用大小写来决定标志符(常量,变量,类型,接口,结构或函数)是否可以被外部包所调用
常用关键字
为初始化的标格式
为初始化的批量格式
var (
a int
b string
c []float32
d func() bool
e struct{
x int
y string
}
)
整形和浮点型变量默认值:0
bool型默认值是 false
字符串默认值为空字符串
函数,指针变量初始值为nil
var (
a int = 100
)
var (
l = 200
)
m := 100
fmt.Printf("HelloWorld %T %d", m, m) //没有分号
m, n, g := "a", "b", 10
x, y int
x := 10
y := 20
fmt.Println(x, y)
x, y = y, x
fmt.Println(x, y)
可以看到x,y的值交换了
uint8即使byte型,int16对应C语言的short型,int64对应C语言的long型
符号 | 数据范围 |
---|---|
uint8 | 2的8次方 |
uint16 | 2的16次方 |
uint32 | 2的32次方 |
uint64 | 2的64次方 |
int8 | -128~127 |
int16 | -32768~32767 |
int32 | -2147483648~2147483647 |
int64 | -9223372036854775808~9223372036854775807 |
byte | 类似uint8 |
rune | 类似int32 |
uint | 32或者64位,根据机器字长决定 |
int | 与uint一样 |
uintptr | 无符号整形,正与存放一个指针 |
func main(){
a := 100
var b byte = 100
var c rune = 200
var e byte = 'a'
var f rune = '一'
fmt.Printf("%T %v\n", b, b);
fmt.Printf("%T %v\n", c, c);
fmt.Printf("%T %v\n", e, e);
fmt.Printf("%T %v\n", f, f);
}
arr := []byte{97, 98, 99, 65}
code := `type a int
m := 19
b = "string"
h = 100
fmt.Printf("HelloWorld %T %d", m, m) //没有分号
`
fmt.Println(code)
var e byte = 'a'
var f rune = '一'
通用
bool型
整数
浮点数和复数的两个组分
字符串和 []byte
fmt中不仅有 print 等方法格式化输出到控制台,更能将格式化输出的值作为返回值返回成字符串类型
var str := fmt.Sprintf("%b", 123)
go语言真的很严格,进行运算的变量必须是统一类型的变量
ch := 90
en := 80.9
avg := (ch + int(en))/2
avg2 := (float64(ch) + en)/2.0
fmt.Println(avg)
fmt.Println(avg2)
ch := 90
res := string(ch)
fmt.Println(res) // 输出 Z 就是 90对应的ASCII
int转string
不允许string转int
const (
Unkown = 0
Female = 1
Male = 2
)
const (
a = 10
b
c
)
// a = 10 b = 10 c = 10
const (
X = "A"
Y
)
const (
a = iota
b = iota
c = iota
)
// a = 0 b = 1 c = 2
const (
A = "Test"
B = iota
C
)
// a = "Test" b = 1 c = 2
//1
if 布尔表达式{
}
//2
if 布尔表达式 {
} else {
}
//3
if 布尔表达式 {
} else if 布尔表达式 {
} else {
}
num := 89
if num%2 == 1{
fmt.Println("奇数");
}
switch var1 {
case var1:
...
case var2:
...
case var3:
...
default:
...
}
func init(){
month := 2
days := 0
switch month {
case 1, 3, 5, 7, 8, 10, 12
days = 31
fallthrough //会执行下一个case,然后在下一个case break掉
case 4, 6, 9, 11:
days = 30
case 2:
days = 28
default = -1
}
}
go语言中没有while也没有do…while…