Go语言中文网 为您找到相关结果 158

[译] 通过官网 Go 语言学习笔记 | How to Write Go Code

文:How to Write Go Code 一些基本概念 下载 & 安装:golang.org/doc/install go tool:安装好 Go 之后自带的 cmd 工具,用于 fetch, build and install Go packages. workspace:每一个 Go 的项目代码都存储在一个 workspace 里 一个 workspace 可能包含多个版本管理的 repository(后面用 repo 简写) 每一个 repo 里可能包含一个或多个 packages 每一个 package 在一个文件夹里包含一个或多个 Go 源码文件 一个 package 的文件夹路径就是它的 import path go tool 对代码的组织结构有特定的要求 Workspace...阅读全文

博文 2019-07-18 12:04:49 阴明

Docker Swarm代码分析笔记(10)——Cluster.validatePendingEngine

Cluster.validatePendingEngine是实际上用来连接Docker engine的代码: // validatePendingEngine connects to the engine, func (c *Cluster) validatePendingEngine(engine *cluster.Engine) bool { // Attempt a connection to the engine. Since this is slow, don't get a hold // of the lock yet. if err := engine.Connect(c.TLSConfig); err != nil { log.WithFields(log.Fields{"...阅读全文

博文 2017-06-25 14:01:50 肖楠

Golang学习笔记-结构体

定义结构体的格式如下: type struct_variable_type struct { member definition; member definition; ... member definition; } type Book struct { id int name string author string } 初始化结构体的格式如下,使用key-value的形式初始化时忽略的字段为零值。 structure_variable_type {value1, value2...valuen} structure_variable_type { key1: value1, key2: value2..., keyn: valuen} func main() { fmt.Println...阅读全文

博文 2019-09-27 23:32:45 aside section ._1OhGeD

第十天:golang学习笔记之container

★container | heap堆操作, list双向链表,ring环形链表 现在网上的算法题,很少有可以用golang作答的,不过看看别人造的轮子还是挺有意思的 container本身并不是包,但目录下包括三个子包:heap,list,ring heap 包含一个Interface接口,接口定义了Push(x interface{}),Pop() interface{} ,并包含了sort.Interface接口。 这里的堆是小顶堆 heap并没有可用的实现,但在test中找到一个: // An IntHeap is a min-heap of ints. type IntHeap []int func (h IntHeap) Len() int { return len(h) } fu...阅读全文

博文 2019-12-27 21:32:41 Macmillan_

Golang学习笔记-接口和错误

接口 Go接口定义了方法后,其它类型只要实现了这些方法就是实现了接口。 type Person interface { speak() } type Student struct { } type Worker struct { } func (student Student) speak(){ println("I am student") } func (worker Worker) speak(){ println("I am worker") } func main() { var person Person person=Worker{} person.speak()//I am worker person=Student{} person.speak()//I am studen...阅读全文

博文 2019-09-27 23:32:44 aside section ._1OhGeD

《Go 语言程序设计》读书笔记 (七) Goroutine 与系统线程的区别

goroutine和线程的区别 动态栈 每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因为2MB的栈对于一个小小的goroutine来说是很大的内存浪费,比如对于我们用到的,一个只是用来WaitGroup之后关闭channel的goroutine来说。而对于go程序来说,同时创建成百上千个gorutine是非常普遍的,如果每一个goroutine都需要这么大的栈的话,那这么多的goroutine就不太可能了。除去大小的问题之外,固定大小的栈对于更复杂或者更深层次的递归函数调用来说显然是不够的。修改固定的大小可以提升空间的利用率允许创建更多的线程,并且可以允许更深的递归...阅读全文

go tcp c/s server client 学习笔记

server1:package main import ( "fmt" "net" ) func main() { l, err := net.Listen("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } fmt.Println("服务器等待客户端连接") conn, err := l.Accept() if err != nil { fmt.Println(err) } defer conn.Close() fmt.Println("客户端建立连接 ") buf := make([]byte, 4096) n, err := conn.Read(buf) if err != nil { fmt.Println(err)...阅读全文

博文 2019-07-25 14:03:27 xingzhehxiang