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]

posted @ 2023-09-21 15:57  hewo  阅读(15)  评论(0编辑  收藏  举报