Skip to content

Latest commit

 

History

History
235 lines (165 loc) · 5.09 KB

Go语言-笔记.md

File metadata and controls

235 lines (165 loc) · 5.09 KB

Google资深工程师深度讲解Go语言-笔记

Description

%d          十进制整数
%x, %o, %b  十六进制八进制二进制整数%f, %g, %e  浮点数3.141593 3.141592653589793 3.141593e+00
%t          布尔true或false
%c          字符rune) (Unicode码点)
%s          字符串
%q          带双引号的字符串"abc"或带单引号的字符'c'
%v          变量的自然形式natural format%T          变量的类型
%%          字面上的百分号标志无操作数

第2章 基础语法

2-1 变量定义

go语言Print、Println 、Printf 、Sprintf 、Fprintf的区别

Print输出内容结尾没有换行4ab
Println输出内容结尾自带回车换行4ab
Fprintf格式化字符串并输出fmt.Sprintf("是字符串 %s ","string")dc5ba5a
Sprintf格式化字符串并返回可以用来赋值不会输出2e58
 s := fmt.Sprintf("是字符串 %s ","string") 757ad
  • Go语言中,你定义了变量,没使用的话,会报错
/**
 * @date Created by 邵桐杰 on 2021/6/19 11:44
 * @微信公众号 千羽的编程时光
 * @个人网站 www.nateshao.cn
 * @博客 https://nateshao.gitee.io
 * @GitHub https://github.com/nateshao
 */
package main

import (
	"fmt"
	"math"
	"math/cmplx"
)

var (
	aa = 3
	ss = "kkk"
	bb = true
)

func variableZeroValue() {
	var a int
	var s string
	fmt.Printf("%d %q\n", a, s)
}

func variableInitialValue() {
	var a, b int = 3, 4  // int 这里可以省略 因为Go语言会识别到
	var s string = "abc" // string 这里可以省略 因为Go语言会识别到
	fmt.Println(a, b, s)
}

func variableTypeDeduction() {
	var a, b, c, s = 3, 4, true, "def"
	fmt.Println(a, b, c, s)
}

func variableShorter() {
	a, b, c, s := 3, 4, true, "def"
	b = 5
	fmt.Println(a, b, c, s)
}

func euler() {
	fmt.Printf("%.3f\n",
		cmplx.Exp(1i*math.Pi)+1)
}

func triangle() {
	var a, b int = 3, 4
	fmt.Println(calcTriangle(a, b))
}

func calcTriangle(a, b int) int {
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	return c
}

func consts() {
	const (
		filename = "abc.txt"
		a, b     = 3, 4
	)
	var c int
	c = int(math.Sqrt(a*a + b*b))
	fmt.Println(filename, c)
}

func enums() {
	const (
		cpp = iota
		_
		python
		golang
		javascript
	)

	const (
		b = 1 << (10 * iota)
		kb
		mb
		gb
		tb
		pb
	)

	fmt.Println(cpp, javascript, python, golang)
	fmt.Println(b, kb, mb, gb, tb, pb)
}

func main() {
	fmt.Println("Hello world")
	variableZeroValue()
	variableInitialValue()
	variableTypeDeduction()
	variableShorter()
	fmt.Println(aa, ss, bb)

	euler()
	triangle()
	consts()
	enums()
}

2-2 内建变量类型

reflect.TypeOf()可以判断类型
派生类型:包括:
(a) 指针类型Pointer)
(b) 数组类型
© 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型interface)
(h) Map 类型
数字类型 其他类型 浮点型
1 uint8
无符号 8 位整型 (0 到 255)
1 byte
类似 uint8
1 float32
IEEE-754 32位浮点型数
2 uint16
无符号 16 位整型 (0 到 65535)
2 rune
类似 int32
2 float64
IEEE-754 64位浮点型数
3 uint32
无符号 32 位整型 (0 到 4294967295)
3 uint
32 或 64 位
3 complex64
32 位实数和虚数
4 uint64
无符号 64 位整型 (0 到 18446744073709551615)
4 int
与 uint 一样大小
4 complex128
64 位实数和虚数
5 int8
有符号 8 位整型 (-128 到 127)
5 uintptr
无符号整型,用于存放一个指针
6 int16
有符号 16 位整型 (-32768 到 32767)
7 int32
有符号 32 位整型 (-2147483648 到 2147483647)
8 int64
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

2-3 常量与枚举

定义常量使用关键字const,go语言常量不用大写

func contst()  {
    const name  = "abc.txt" // 常量一般是小写
    const a,b = 3,4
    var c int
    c = int(math.Sqrt(a*a+b*b))
    fmt.Println(c)
}

枚举 特殊的常量类型枚举

func enums()  {
    const (
    java = 0
    golang = 1
    python =2
    scala = 3
)
    fmt.Println(java,golang,python,scala)
}
  • Go语言没有char,只有rune

2-4 条件语句