GO 语言入门
GO 语言入门
语法基础
定义
1.批量格式
var a,b int
var a int = 114514
var (
a int
b string
c []float32
)
type ST struct{
x int
y int
}
i,j:=0,1 // 定义在func内才行
const e_pi = 3.14 //芝士常量
注: _ 为匿名变量。
提供一些 go 的基本类型吧:
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名
// 表示一个 Unicode 码点
float32 float64
complex64 complex128
(硬(en)抄的)
以及一些占位符
%v:通用占位符,根据值的类型进行格式化输出。
%d:十进制整数。
%b:二进制表示的整数。
%o:八进制表示的整数。
%x:十六进制表示的整数(使用小写字母 a-f)。
%X:十六进制表示的整数(使用大写字母 A-F)。
%f:浮点数(默认精度为小数点后六位)。
%e、%E:科学计数法表示的浮点数。
%s:字符串。
%t:布尔值(true 或 false)。
%p:指针的十六进制表示。
%c:字符(Unicode码点值)。
%U:Unicode格式:U+1234。
%%:百分号自身(无操作数)。
(gpt)
import
重要但简单的一环,类似 py,可以写在一堆:
import (
"fmt"
"math"
)
注意,在go中,左括号什么的不允许换行(震怒)
引用时注意,首字母大写才说明来自某个包,比如:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi)
}
如果是
math.pi
就会寄。
函数
在 go 中,定义都是放在后面的,函数也不例外。
比如:
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
后缀的type如果不写就是void
package main
import "fmt"
var c int
func add(x int, y int) {
c = x + y
}
func main() {
add(23, 4)
fmt.Println(c)
}
不 return 的话可以直接
return
(真的是 c Pro MAX)
1当然,如果多写就是返回多个(这点很灵活)
一个例子
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := "1!", "5!"
fmt.Println(a, b)
fmt.Println(swap(a, b))
}
轻松实现了swap
在声明参数的时候,可以合并同类项
func add(x,y int) int {
循环
牛魔的go,大括号不提行就算了,nm怎么连 for 的括号都不打
几乎与 c 一样
for i:=0; i < n ;i++{
}
for 也可以当成 while 用
for sum <1000 {
sum +=sum
}
注:可以直接
for {
}
来玩无限循环
分支
我发现 go 真的不喜欢打 (),真的很喜欢 {}
所以 if 就是 c 的不打小括号版本,同时不允许不写 {}
懒得写例子了。
切片
与python差不多
注意,是 左闭右开 的
同时,切片就像指针一样,修改会影响原本的。
一个相当不错的例子
package main
import "fmt"
func main() {
names := [4]string{
"John",
"Paul",
"George",
"Ringo",
}
fmt.Println(names)
a := names[0:2]
b := names[1:3]
fmt.Println(a, b)
b[0] = "XXX"
fmt.Println(a, b)
fmt.Println(names)
}
output
[John Paul George Ringo]
[John Paul] [Paul George]
[John XXX] [XXX George]
[John XXX George Ringo]