GO语言基础语法 | 青训营笔记

105 阅读3分钟

一、变量定义

①使用var关键字

var a,b,c bool

var s1,s2 string = "hello","world"

可放在函数内,或直接放在包内

使用var()集中定义变量

②让编译器自动决定类型

var a,b,i,s1s2 = ture,false,3,"hello","world"

③使用:=定义变量

a,b,i,s1,s2 := ture,false,3,"hello","world"

只能在函数内使用

不能重复定义(:=)变量

二、内建变量类型

Go语言的内置变量类型有:

  1. bool: 布尔类型,只有 true 和 false 两个值。

  2. string: 字符串类型,用于存储文本信息。

  3. int、int8、int16、int32、int64: 整数类型,可以存储不同位数的整数值。

  4. uint、uint8、uint16、uint32、uint64: 无符号整数类型,可以存储不同位数的无符号整数值。

  5. float32、float64: 浮点数类型,用于存储实数值。

  6. complex64、complex128: 复数类型,用于存储实数和虚数部分的复数值。

  7. byte: 类似于 uint8 类型,用于存储ASCII编码的字符值。

  8. rune: 类似于 int32 类型,用于存储Unicode编码的字符值。

  9. uintptr: 无符号整型,用于存储一个指针的数值。

以上是 Go 语言的内置变量类型。除此之外,Go 还支持用户自定义的数据类型,包括结构体、数组、切片、映射、通道等。

  • 变量类型写在变量名前面
  • 编译器可推测变量类型
  • 没有char,只有rune
  • 原生支持复数类型
变量的强制转换:
package main

import (
	"fmt"
	"math"
)

func triangle() {
	var a, b int = 3, 4
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)
}

func main() {
	triangle()
}

我们在triangle函数里定义 a,b,c int类型的变量,并给a,b赋值,math.Sqrt()开根号的功能,由于这个方法参数需要float64类型的,然后我们就得转换类型,然后返回一个不是int类型的,还得转换成int类型,因为c变量为int类型。

三、常量的定义

const 数值可作为各种类型使用

const filename = "abc.txt"

const a, b = 3, 4

四、if_else 、switch 条件判断语句

  • if的条件里可以赋值
  • if的条件里赋值的变量作用域就在这个if语句里
package main

import (
	"fmt"
	"io/ioutil"
)

const filename = "abc.txt"

func main() {
	if contents, err := ioutil.ReadFile(filename); err == nil {
		fmt.Println(string(contents))
	} else {
		fmt.Println(err)
	}
        //fmt.Println(contents) //会报错
}
  • switch 会自动break ,switch 后可以没有表达式
package main

import "fmt"

func f() {  
if 7%2 == 0 {  
fmt.Print("7 is even")  
} else {  
fmt.Println("7 is odd")  
}  
if 8%4 == 0 {  
fmt.Print("8 is divisible by 4")  
}  
if num := 9; num < 0 {  
fmt.Print(num, "is negetive")  
} else if num < 10 {  
fmt.Println(num, "has 1 digit")  
} else {  
fmt.Println(num, "has multiple digits")  
}
}

func eval(a, b int, op string) int {
	var result int
	switch op {
	case "+":
		result = a + b
	case "-":
		result = a - b
	case "*":
		result = a * b
	case "/":
		result = a / b
	default:
		panic("unsupported operator:" + op)
	}
	return result
}

func main() {
	fmt.Println(eval(3, 4, "+"))
	fmt.Println(eval(3, 4, "^"))
        f()
}

这两个是运用了if_else、switch 语句,可见简便多了,能省则省呀。

五、for 循环

  • for 的条件里不需要括号
  • for的条件里可以省略初始条件,结束条件,递增条件
package main

import "fmt"

func main() {
	i := 1
	for {
		fmt.Println("loop")
		break
	}
	for j := 7; j < 9; j++ {
		fmt.Print(j)
	}
	for n := 0; n < 5; n++ {
		if n%2 == 0 {
			continue
		}
		fmt.Println(n)
	}
	for i <= 3 {
		fmt.Println(i)
		i = i + 1
	}

}

go语言删去了while,使语句再简便一点

今天就学到这~加油