go语言
jason_cuijiahui
这个作者很懒,什么都没留下…
展开
-
golang中的defer
特征代码再defer声明前返回,不会调用deferdefer可配合recover使用,处理panicpackage main import "fmt" func main(){ defer func(){ // 必须要先声明defer,否则不能捕获到panic异常 fmt.Println("c") if err:=recover();err!=nil{ fmt.Println(err) // 这里的err其实就是panic原创 2020-06-24 11:18:27 · 463 阅读 · 0 评论 -
Golang中结构体JSON
参考基本情况// 定义结构体的时候,只有字段名是大写的,才会被编码到json当中// 因此,json中并没有password字段type Account struct { Email string password string Money float64}func main() { account := Account{ Email:...原创 2019-10-25 10:37:28 · 1976 阅读 · 0 评论 -
golang常用命令
/// 通过go mod进行项目依赖包管理// 项目目录下,执行以下命令初始化go mod init// 执行以下命令会自动分析项目里的依赖关系同步到go.mod文件中,同时创建go.sum文件go mod tidy// 以上的管理依赖管理操作,所以依赖包还是在GOPATH/src目录下,go module 当然可以把包直接放在当前项目中管理// 直接使用这个命令就可以把GOPATH...原创 2019-10-25 09:51:25 · 248 阅读 · 0 评论 -
go语言常用函数:copy
转自 copy函数用于将内容从一个数组切片复制到另一个数组切片。如果加入的两个数组切片不一样大,就会按其中较小的那个数组切片的元素个数进行复制。slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 copy(slice1, sli...转载 2018-04-09 16:24:20 · 1064 阅读 · 0 评论 -
go语言常用函数:make
转自简介内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上)跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型make()函数在golang的代码如下:func make(t Type,size IntegerType)...转载 2018-04-09 16:34:08 · 17502 阅读 · 9 评论 -
go中int到底有多少位?
There are also two types called just int and uint that are the natural or most efficient size of signed and unsigned integers on a particular platform;int is by far the most widely used numeric type...原创 2018-04-09 16:39:42 · 6511 阅读 · 1 评论 -
make过程中遇到的问题Makefile:8: *** "$GOOS is not defined.". Stop.
发现GOOS未定义,我们可以通过:export GOOS=windows对GOOS进行定义。可以通过go env得到GOOS的值。原创 2018-04-15 15:27:56 · 703 阅读 · 0 评论 -
Go语言中struct内部的反引号
type Account struct { // 把struct编码成json字符串时,common.Address字段的key是address Address common.Address `json:"address"` // Ethereum account address derived from the key // 把struct编码成json字符串时,URL字段的key是url...原创 2018-10-09 19:11:52 · 5870 阅读 · 0 评论 -
Golang中函数传入的/返回(赋值=)的slice/map/struct到底是什么?
sliceslice的本质是一个三元组(数组地址,长度,容量)一个例子package mainimport ( "fmt")func test(input []int) []int{ // input: 0x40c110->{address, 4, 4} fmt.Printf("Slice inside address: %p\n&quo原创 2018-11-26 16:48:48 · 4302 阅读 · 0 评论 -
Golang 101&指令
Golang 101网址 & 相应视频Golang 指令Go is a tool for managing Go source code.Usage: go command [arguments]The commands are: build compile packages and dependencies c...原创 2018-11-29 18:15:43 · 509 阅读 · 0 评论 -
golang中的闭包的意义和用法
什么是闭包?Go 函数可以是一个闭包。闭包是一个函数值,它引用了函数体之外的变量。 这个函数可以对这个引用的变量进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。我的不靠谱的理解,一个闭包相当于一个类的实例,函数体之外的变量相当于这个实例存储的变量。没有闭包的时候,函数就是一次性买卖,函数执行完毕后就无法再更改函数中变量的值(应该是内存释放了);有了闭包后函数就成为了一个变量的值,只要...原创 2018-12-02 16:54:29 · 8333 阅读 · 1 评论 -
golang如何获取变量的类型
package mainimport ( "reflect" "fmt")type Info struct { id int name string}func getType1(v interface{}) string { return fmt.Sprintf("%T", v)}func getType2(v interface{}) string { retu...原创 2018-12-02 17:44:57 · 2787 阅读 · 0 评论 -
Golang中 json.Decoder vs json.Unmarshal
json的反序列化方式有两种:Use json.Unmarshal passing the entire response stringdata, err := ioutil.ReadAll(resp.Body)if err == nil && data != nil { err = json.Unmarshal(data, value)}using json...原创 2018-11-27 15:15:59 · 7888 阅读 · 2 评论 -
golang中switch的用法
package mainimport ( "fmt")func main() { ids := []int{1, 2, 3, 4, 5, 6} for i := range ids { switch id := ids[i]; id { case 1: fmt.Println("Hit id 1!") case 2, 3: fmt.Println("Hit...原创 2018-12-02 23:52:55 · 600 阅读 · 0 评论 -
golang的for range原理以及引致的一些奇怪问题
基本用法下述两个函数test1与test2运行结果有何区别?func test1() { intArray := []int{1, 2, 3, 4} for _, val := range intArray { val++ } // 仍然为[1, 2, 3, 4] fmt.Println(intArray)}func test2() { intArray := []int...原创 2018-12-01 11:39:02 · 1858 阅读 · 0 评论 -
Base58编码解码Go实现
base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值。区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。编码流程 (本质为大数与字符串的转化)...原创 2018-02-07 15:08:31 · 3944 阅读 · 3 评论 -
Golang中的[]byte与16进制(String)之间的转换
把[]byte表示成16进制(用String的形式)[]byte -> Stringsrc := []byte("Hello")encodedStr := hex.EncodeToString(src)// 注意"Hello"与"encodedStr"不相等,encodedStr是用字符串来表示16进制String -> []bytetest, _ := hex.DecodeString(enc原创 2018-03-01 23:30:25 · 62031 阅读 · 0 评论 -
Golang Notes
2 Program Structure2.1 Names可见性1)声明**在函数内部**,是函数的本地值,相似private2)声明**在函数外部**,是对当前包可见(包内全部.go文件都可见)的全局值,相似protect3)声明**在函数外部且首字母大写**是全部包可见的全局值,相似public命名风格写短语要么全部大写。要么全部小写。比如htmlEscape,HTMLEscape,不能写成原创 2017-09-26 22:04:51 · 312 阅读 · 0 评论 -
Go的空白标识符
https://studygolang.com/articles/425原创 2017-12-11 16:41:38 · 933 阅读 · 0 评论 -
Go的工作空间
http://blog.csdn.net/xiaorenwuzyh/article/details/45532913原创 2017-12-11 19:33:11 · 816 阅读 · 0 评论 -
sublime 3 + Golang + 代码补全
关于Golang的部分配置golang的环境变量// 按自己Golang的具体安装情况填写GOROOT=E:\GO\mount\GOPATH=E:\GO\myGoGOBIN=%GOPATH%\bin 注意:GOPATH(工作空间)目录下要有三个目录:bin、pkg、src。%GOROOT%\bin添加至Path环境变量让sublime 3支持Gol...原创 2018-01-08 11:20:44 · 21802 阅读 · 0 评论 -
国内的go get问题的解决
在国内采用go get有时会下载不到一些网站如golang.org的依赖包。方法1(亲测有效): gopm 代替go 下载第三方依赖包可以采用gopm从golang.org一些镜像网站上下载。 a). 安装gopmgo get -u github.com/gpmgo/gopmb). 用gopm get -g代替go getgopm get 不采用-g参数,会把依赖包下载.vendor目录下面;原创 2018-02-10 16:43:42 · 33911 阅读 · 0 评论 -
Golang的Gob编码
https://www.cnblogs.com/yjf512/archive/2012/08/24/2653697.html原创 2018-02-10 20:24:47 · 673 阅读 · 0 评论 -
Golang不支持类型别名
https://www.jianshu.com/p/bda4630f93d2原创 2018-02-26 10:31:46 · 1600 阅读 · 0 评论 -
golang函数中的参数不支持默认值
https://www.zhihu.com/question/24368980原创 2018-02-26 11:15:15 · 21125 阅读 · 2 评论 -
Golang中方法的接受类型与调用类型
举个例子:a1) Distance方法的接收器参数是Point类型a2) ScaleBy方法的接收器参数是*Point类型b1) 变量p是Point类型b2) 变量pptr是*Point类型下面有三种情形: 1.b1调用a1,b2调用b2p.Distance(q)pptr.ScaleBy(2)2.b1调用a2(存在隐式转换)p.ScaleBy(2) // implicit (&p).Sca原创 2018-02-12 11:31:08 · 412 阅读 · 0 评论 -
Golang的一些功能函数——Slice
1. 翻转slicefunc reverse(s []int) { for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i], s[j] = s[j], s[i] }}2. []byte间比较大小package mainimport ( "bytes")func mai...原创 2018-02-07 10:21:24 · 846 阅读 · 0 评论 -
Golang中接受可变个数参数的函数(Variadic function)
一个例子:func sum(vals ...int) int { // 在函数内部 vals 作为slice []int的存在而使用 total := 0 for _, val := range vals { total += val } return total}使用:sum()sum(3)sum(1, 2, 3)另一个例子:func原创 2018-02-07 18:18:33 · 4481 阅读 · 0 评论 -
Golang判断key是否在map中
if _, ok := map[key]; ok { }原创 2018-02-27 16:31:55 · 10915 阅读 · 0 评论 -
Golang: undefined: "main.main"
缺了main.go文件原创 2018-02-27 16:56:01 · 446 阅读 · 0 评论 -
map赋值前要先初始化:assignment to entry in nil map
注意这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以下面的赋值会出现错误:test := make(map[string]map[int]int)test["go"][0] = 0 // error正确的做法:test := make(map[string]map[int]int)test["go"] = make(map[int]int原创 2018-03-01 11:47:32 · 39281 阅读 · 1 评论 -
看懂C/C++语言的声明语法,并与Go语言进行比较
https://blog.go-zh.org/gos-declaration-syntaxhttp://www.cnblogs.com/haore147/p/3647262.html原创 2017-09-06 22:45:10 · 677 阅读 · 0 评论