GO语言极简培训教程
一 环境安装
https://go.dev/dl/
https://www.jetbrains.com/go/
package main
import "fmt"
func main() {
fmt.Println("hello major!")
}
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
// 输入输出的系统包
import "fmt"
// 入口主函数
func main() {
// ln表示换行
fmt.Println("hello major!")
}
二 变量基础类型和复杂类型
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
import "fmt"
// 入口主函数
func main() {
// 整数
var a int = 999
var b int = 100
var c = 777 // 自动推导类型
fmt.Println(a, b, c)
// 浮点数
var f1 float64 = 3.14159
var f2 = 3.11 // 自动推导类型
fmt.Println(f1, f2)
// 打印变量类型
fmt.Printf("%T\n", f2)
// 字符串类型
var str1 string = "Hello World"
fmt.Println(str1)
}
三 流程控制
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据是否满足条件,有选择的执行相应功能。
循环结构:依据条件是否满足,循环多次执行某段代码。
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
import "fmt"
// 入口主函数
func main() {
score := 700
if score == 700 {
fmt.Println("优秀")
}
if a := 600; a == 600 {
fmt.Println("600")
}
}
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
import "fmt"
// 入口主函数
func main() {
score := 600
if score == 700 {
fmt.Println("优秀")
} else if score == 600 {
fmt.Println("良好")
}else {
fmt.Println("一般")
}
if a := 600; a == 600 {
fmt.Println("600")
}
}
Switch
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
import "fmt"
// 入口主函数
func main() {
score := 55
switch score {
case 90:
fmt.Println("A")
case 91:
fmt.Println("B")
case 92:
fmt.Println("C")
default:
fmt.Println("D")
}
}
// 行注释
/*
多行注释
*/
// 1.go语言以包单位
// 2.每个文件必须声明包
// 3.程序必须有一个main包
package main
import "fmt"
// 入口主函数
func main() {
score := 55
switch score {
case 90:
fmt.Println("A")
case 91:
fmt.Println("B")
case 92,93,94:
fmt.Println("C")
default:
fmt.Println("D")
}
}
package main
import "fmt"
// 入口主函数
func main() {
score := 94
switch score {
case 90:
fmt.Println("A")
fallthrough // 继续往下执行
case 91:
fmt.Println("B")
case 92, 93, 94:
fmt.Println("C")
default:
fmt.Println("D")
}
}
package main
import "fmt"
// 入口主函数
func main() {
switch score := 60; score {
case 90:
fmt.Println("A")
fallthrough // 继续往下执行
case 91:
fmt.Println("B")
case 92, 93, 94:
fmt.Println("C")
default:
fmt.Println("D")
}
score2 := 90
switch { // 没有条件
case score2 >= 80:
fmt.Println("A")
default:
fmt.Println("B")
}
}
For循环
package main
import "fmt"
// 入口主函数
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
四 函数
package main
import "fmt"
func test(a int, b int) {
c := a + b
fmt.Println(c)
}
// 入口主函数
func main() {
test(1, 2)
}
package main
import "fmt"
func test(a int, b int) int {
c := a + b
//fmt.Println(c)
return c
}
// 入口主函数
func main() {
c := test(1, 2)
fmt.Println(c)
}
package main
import "fmt"
func test(a int, b int) (c int) {
c = a + b
//fmt.Println(c)
return
}
// 入口主函数
func main() {
c := test(1, 2)
fmt.Println(c)
}
package main
import "fmt"
func test(a int, b int) (c, d int) {
c = a + b
d = a - b
//fmt.Println(c)
return
}
// 入口主函数
func main() {
c, d := test(1, 2)
fmt.Println(c, d)
}
五 指针
六 面向对象
七 异常处理
八 文件IO
package main
import (
"fmt"
"os"
)
// 入口主函数
func main() {
fp, err := os.Create("./a.txt")
if err != nil {
fmt.Println("fail to create file")
}
fp.WriteString("sdsdadadasd")
fp.Close()
}
package main
import (
"fmt"
"os"
)
// 入口主函数
func main() {
fp, err := os.Open("a.txt")
if err != nil {
fmt.Println("err:", err)
}
buf := make([]byte, 1024)
n, err := fp.Read(buf)
fmt.Println(string(buf[:n]))
}
构建项目
同级目录 包名一致
不同目录 包名不一致
//包名.函数名(丽数名首字母大写)
userinfo.Userlogin()
go build test.go
设置镜像源
设置为百度镜像源
go env -w GONOPROXY=\*\*.baidu.com\*\* && go env -w GONOSUMDB=\* && go env -w GOPROXY=https://goproxy.bj.bcebos.com
设置为七牛云镜像源
go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct
go get 获取库
go get gocv.io/x/gocv
Go语言安装OpenCv
https://gocv.io/getting-started/windows/
Cgo
https://sourceforge.net/projects/mingw-w64/files/
离线安装
解压后,配置环境变量
gcc -v
go build --buildmode=c-shared -o Test.dll