go
码灵
爱码。
平时学习新的知识,看到了新的东西,记录下来。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go学习笔记
1.1 go hello Word1.2 go 变量定义1.4 go多重赋值和匿名变量1.5 go常量的定义1.6 go多种变量和常量的定义1.7 go iota枚举1.8 go常用数据类型1.9 go格式化输出1.10 go输入1.11 go类型转换1.12 go类型别名1.13 go运算符1.15 go switch语句1.16 go循环语句2.1 go无参数无返回值的函数2.2 go有参数无返回值函数2.3 go 不定参数函数2.原创 2022-03-16 22:28:05 · 1012 阅读 · 0 评论
-
Go语言开发包安装
的电脑上安装Go语言开发包,首先从 Windows 系统开始。原创 2025-04-25 08:43:08 · 976 阅读 · 0 评论 -
go.mod介绍
go.mod是 Go 语言模块化开发的基石,通过统一的依赖管理机制解决了版本混乱、环境不一致等问题。其结构简洁但功能强大,结合go get等命令,能够高效管理项目的依赖生命周期,适用于从个人项目到企业级微服务架构的各类场景。原创 2025-04-24 10:08:09 · 1157 阅读 · 0 评论 -
go 交叉编译报错 gcc: error: unrecognized command line option '-marm'; did you mean '-mabm'?
go 交叉编译时报错:gcc: error: unrecognized command line option '-marm'; did you mean '-mabm'?问题原因目前无法在开启 cgo 编译模式的情况下进行交叉编译,这是因为 cgo 涉及到的相关函数直接依赖于构建程序所在的操作系统。而且由于各个平台默认的 C 编译器不尽相同,所编译出的程序可能无法兼容。在 ...原创 2020-03-20 10:55:36 · 12562 阅读 · 0 评论 -
go调用C动态库函数
方式一:直接调用动态库,需要有头文件;没有的话还需要自己再写一个动态库去调用;过程比较繁琐;方式二:直接使用cgo调用;使用dlopen去调用动态库;比较方便和go代码在一个文件上; 1 字符串、int相互转换; 2内存手动释放;package main/*#include <dlfcn.h>#include <stdio.h>#i...原创 2020-03-23 17:47:41 · 2306 阅读 · 0 评论 -
1.1go hello Word
// 01_hello//1)go 语言以包作为管理单位//2)每个文件必须先声明包//3)程序必须有一个main包//4)go build/run xxx.go build编译 run编译并且运行package mainimport ( "fmt")//入口函数:一个文件下只能有唯一一个 liteIDE 可以用命令编译运行func main() { //左括号必须...原创 2020-04-01 22:07:03 · 408 阅读 · 0 评论 -
1.2 go 变量定义
package mainimport ( "fmt")//入口函数func main() { //变量命名定义的三种写法 var a int a = 11 fmt.Println("a=", a) //println{}动换行; var b = 22 fmt.Println("b=", b) c := 33 //自动推导类型,同一个变量名只能声明一次, fmt....原创 2020-04-01 22:10:58 · 374 阅读 · 0 评论 -
1.4 go多重赋值和匿名变量
package mainimport "fmt"func test() (a, b, c int) { return 1, 2, 3}func main() { //交换a,b的值 var tem int a := 10 b := 20 tem = a a = b b = tem fmt.Printf("a=%d,b=%d\n", a, b) i, j := 1...原创 2020-04-01 22:16:36 · 322 阅读 · 0 评论 -
1.5 go常量的定义
package mainimport "fmt"func main() { //常量的定义 方式1 const a int = 10 //方式2 不需要:= const b = 20 fmt.Printf("a=%d,b=%d", a, b)}原创 2020-04-01 22:18:26 · 333 阅读 · 0 评论 -
1.6 go多种变量和常量的定义
package mainimport "fmt"func main() { //不同变量类型的定义 var ( a int b float64 ) a, b = 10, 12.2 fmt.Printf("a=%d,b=%.3f\n", a, b) const ( i int = 10 //--> i=10 j float64 = 12.4...原创 2020-04-01 22:21:00 · 407 阅读 · 0 评论 -
1.7 go iota枚举
package mainimport "fmt"func main() { //1、iota常量自动生产器,每个一行,自动累加1 //2、iota给常量赋值使用 const ( a = iota //0 b = iota //1 c = iota //2 d //3 e, f ...原创 2020-04-01 22:22:57 · 328 阅读 · 0 评论 -
1.8 go常用数据类型
package mainimport "fmt"func main() { //1、布尔类型 var a bool fmt.Println("a=", a) //2、浮点型 var b float32 //float64相比小数位更准确 b = 3.14 fmt.Println("b=", b) //3、字符 var ch byte ch = 97 ...原创 2020-04-01 22:25:22 · 304 阅读 · 0 评论 -
1.9 go格式化输出
package mainimport "fmt"func main() { a := 10 b := "abc" //%T 变量的数据类型 fmt.Printf("a is %T\n", a) //%v 自动匹配格式输出 fmt.Printf("a=%v,b=%v", a, b)}原创 2020-04-01 22:27:24 · 178 阅读 · 0 评论 -
1.10 go输入
package mainimport "fmt"func main() { var a int fmt.Println("请输入变量a:") //fmt.Scanf("%d", &a) fmt.Scan(&a) fmt.Println("a=", a)}原创 2020-04-02 08:39:32 · 320 阅读 · 0 评论 -
1.11 go类型转换
package mainimport "fmt"func main() { //不兼容类型 int 和bool // 兼容性int 和 byte 可以转换 ch := 'a' var a int a = int(ch) fmt.Println("a=", a)}原创 2020-04-02 08:40:08 · 172 阅读 · 0 评论 -
1.12 go类型别名
package mainimport "fmt"func main() { //方式1 type bigint int64 var a bigint fmt.Printf("a is %T\n", a) //方式2 type ( int int32 char byte ) var b int var c char fmt.Printf("b type is ...原创 2020-04-02 08:40:40 · 339 阅读 · 0 评论 -
1.13 go运算符
package mainimport "fmt"func main() { //加减乘除 自增取余、与或非(关系运算符)等等和java相同 c := 10 fmt.Println(c >= 1 && c < 12) //& scna(&a) 取地址运算符}...原创 2020-04-02 08:41:04 · 298 阅读 · 0 评论 -
1.15 go switch语句
package mainimport "fmt"func main() { //-----------格式1 num := 0 switch num { //switch后面是变量本身 case 1: fmt.Println("1楼请出去") //break //go 语言保留了break,默认包含 //fallthrough //不跳出switch语句...原创 2020-04-02 09:34:59 · 332 阅读 · 0 评论 -
1.16 go循环语句
package mainimport "fmt"import "time"func main() { //---------格式1 //for 初始化条件; 判断条件;条件变化{} var total int for i := 1; i <= 100; i++ { total += i } fmt.Println("1+...+100=", total) /...原创 2020-04-02 09:35:17 · 427 阅读 · 0 评论 -
2.1 go无参数无返回值的函数
package mainimport "fmt"func main() { setHello()}//无参无返回值函数的定义func setHello() { fmt.Println("hello go!")}原创 2020-04-02 09:35:38 · 3162 阅读 · 0 评论 -
2.2 go有参数无返回值函数
package mainimport "fmt"func main() { sayNum(1) sayNum2(2, 3) sayNum2(4, 5)}//参数的赋值方式不同func sayNum(a int) { fmt.Println("a=", a)}func sayNum2(a int, b int) { fmt.Printf("a=%d\n b=%d\n...原创 2020-04-02 09:36:02 · 814 阅读 · 0 评论 -
2.3 go 不定参数函数
package mainimport "fmt"func main() { //sayNum(1, 2, 3) test(1, 3, 5, 9)}//...int 不定参数,可以是0个参数;如果存在多个参数,必须放在最后面func sayNum(args ...int) { for i, data := range args { fmt.Printf("args[%d...原创 2020-04-02 09:36:29 · 393 阅读 · 0 评论 -
2.4 go 无参有返回值 多个返回值函数
package mainimport "fmt"func main() { a := setNum2() fmt.Println("a=", a) b, c, d := setNum5() fmt.Printf("b=%d,c=%d,d=%d", b, c, d)}//-------------一个返回值func setNum() int { return 666...原创 2020-04-03 08:54:12 · 389 阅读 · 0 评论 -
2.5 go有参有返回值函数
package mainimport "fmt"func main() { max, min := compareVal(22, 33) fmt.Printf("max=%d,min=%d", max, min)}//返回最大最小值func compareVal(a, b int) (max, min int) { if a > b { max = a min...原创 2020-04-03 08:54:40 · 329 阅读 · 0 评论 -
2.6 go递归函数
package mainimport "fmt"/*递归函数*/func addSelf(b int) (total int) { fmt.Println("a=", b) b++ if b <= 100 { //必须有结束的条件;执行100次 total = b total += addSelf(b) } return total}func main...原创 2020-04-03 08:54:57 · 171 阅读 · 0 评论 -
2.7 go函数类型
package mainimport "fmt"//函数也是一种类型,通过type给一个函数类型起名type FuncType func(int, int) int //没有函数名字,没有实现{}func add(a, b int) int { return a + b}func minux(a, b int) int { return a - b}func main...原创 2020-04-03 08:55:18 · 166 阅读 · 0 评论 -
2.9 go 匿名函数
package mainimport "fmt"func main() { str := "我是匿名函数!" //1匿名函数,没有函数名字,函数定义,还没有调用 f1 := func() { fmt.Println("tip:", str) } //2定义的匿名函数必须被调用 f1() //3匿名函数也是一种函数类型 type FuncType func() va...原创 2020-04-03 08:55:51 · 306 阅读 · 0 评论 -
2.10 go闭包
package mainimport "fmt"//返回函数类型func test() func() int { var a int re := func() int { a++ return a } return re}func main() { a := 1 func() { //引用外部变量,保留当前值 fmt.Println("a=", a)...原创 2020-04-03 08:56:08 · 182 阅读 · 0 评论 -
2.12 go接收命令行参数函数
package mainimport "fmt"import "os"func main() { //获取输出参数 list1 := os.Args //获取参数长度 le := len(list1) fmt.Println("len=", le) for i, data := range list1 { fmt.Printf("%d, %s\n", i, data)...原创 2020-04-03 08:56:41 · 497 阅读 · 0 评论 -
2.13 go局部变量全局变量
package mainimport "fmt"//全局变量 可不使用var b intfunc main() { //局部变量,必须使用;执行到此才会分配空间;方法结束释放资源 //局部变量和全局变量同名,就近使用 var a int fmt.Println("a=", a) b++ fmt.Println("a=", b) //输出1 b++ fmt.Prin...原创 2020-04-03 08:57:14 · 475 阅读 · 0 评论 -
2.14 go工作区
///---------1结构src 目录1//同一目录下包名必须相同 目录2 main.go //在src目录下 main包 有且只有一个pkg //用于存放有go install 命令构建的代码包的”.a“归档文件bin //与pkg类似,存放 通过go install 命令后生成的可执行文件//----------2importimport( ....原创 2020-04-04 09:47:13 · 344 阅读 · 0 评论 -
3.1 go指针
package mainimport "fmt"func main() { //每个变量有两个含义:变量的内存,变量的地址 a := 10 fmt.Printf("&a=%v\n", &a) fmt.Printf("&a=%v\n", a) //保存某个变量的地址,需要指针类型,*int 保存int的地址,**int 保存*int的地址 var p ...原创 2020-04-04 09:47:28 · 130 阅读 · 0 评论 -
3.2 go new函数的使用
package mainimport "fmt"func main() { //a := 10 var p *int //p=&a p = new(int) *p = 666 fmt.Println("p=", p) fmt.Println("*p=", *p) b := *p fmt.Println("b=", b) fmt.Println("&b...原创 2020-04-04 09:47:42 · 491 阅读 · 0 评论 -
3.3 go 数组
package mainimport "fmt"func main() { //数组的定义 数据类型为int的数组 大小为50 //数组长度必须为常量 a := 3 var id [10]int for i := 0; i < len(id); i++ { //赋值 id[i] = i fmt.Println(id[i]) } //var id2 [a]i...原创 2020-04-04 09:52:11 · 316 阅读 · 0 评论 -
3.4 go 二位数组
package mainimport "fmt"func main() { var a [2][2]int a = [2][2]int{{1, 1}, {2, 2}} for _, data := range a { for _, d := range data { fmt.Println(d) } }}原创 2020-04-04 09:54:51 · 357 阅读 · 0 评论 -
3.5 go数组的比较赋值
package mainimport "fmt"func main() { //支持 == 和!= 比较是不是每个元素都不一样,2个数组比较 数组类型要一致 a := [5]int{1, 2, 3, 4, 5} b := [5]int{1, 2, 3, 4, 5} c := [5]int{1, 2, 3, 4}//未赋值的为类型默认值 为0 [1 2 3 4 0] ...原创 2020-04-04 09:59:58 · 425 阅读 · 0 评论 -
3.6 go rand随机数的使用
package mainimport ( "fmt" "math/rand" "time")func main() { //设置种子 只需要一次 //如果种子参数一样,每次运行产生的随机数都一样 rand.Seed(time.Now().UnixNano()) //以系统当前时间作为随机数 fmt.Println("currentime=", time.Now().Uni...原创 2020-04-04 10:04:10 · 660 阅读 · 0 评论 -
3.7 go冒泡排序
package mainimport ( "fmt" "math/rand" "time")func main() { rand.Seed(time.Now().UnixNano()) var randArr [10]int for i := 0; i < len(randArr); i++ { randArr[i] = rand.Intn(100) //...原创 2020-04-04 10:06:21 · 344 阅读 · 0 评论 -
3.8 go数组作为参数使用
package mainimport ( "fmt")//值传递func modify(b [4]int) { b[0] = 111 fmt.Println("b=", b)}//指针 可修改数组值func modify2(b *[4]int) { (*b)[0] = 111 fmt.Println("b=", b)}/*数组作为参数传递是值传递*/fu...原创 2020-04-04 10:11:22 · 846 阅读 · 0 评论 -
3.9 go 切片
/* 切片并不是数组或者指针,他通过内部指针和相关属性 引用数组片断,以实现变长的方案。 slice并不是真正意义上的动态数组,而是一个引用类型,slice总是指向一个底层数组,slice声明也像数组 一样,只是不需要长度。*/package mainimport "fmt"func main() { //01 切片的定义 从同一个a切取的不同s,s改变a也会改变 a...原创 2020-04-04 10:13:35 · 378 阅读 · 0 评论
分享