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

Docker Swarm代码分析笔记(5)——cluster/cluster.go

cluster\cluster.go文件定义了Cluster interface: // Cluster is exported type Cluster interface { // Create a container CreateContainer(config *ContainerConfig, name string, authConfig *types.AuthConfig) (*Container, error) // Remove a container RemoveContainer(container *Container, force, volumes bool) error // Return all images Images() Images ...... } 目...阅读全文

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

Go 语言学习笔记 -第6章

Go 语言学习笔记 -第6章 Go 语言学习笔记 -第6章 方法 方法 package main import "fmt" //结构体 type Person struct { Name string } //给A类型绑定一个方法 //小写p 表示哪个Pesrson变量调用, 就是它的副本 //小写p(最好写person) func (p Person) test() { p.Name = "jack" fmt.Println("Person() name=", p.Name) } func main() { var p Person p.Name = "tom" p.test() //调用方法 fmt.Println("main() name=", p.Name) ...阅读全文

博文 2020-01-29 14:32:37 王知晓

Docker Swarm代码分析笔记(15)——scheduler

Docker Swarm manage命令的scheduler是通过filter和strategy构建的(cli/manage.go): sched := scheduler.New(s, fs) 而scheduler实际的功能就是选择符合cluster.ContainerConfig要求的node(Docker Engine)列表: // SelectNodesForContainer will return a list of nodes where the container can // be scheduled, sorted by order or preference. func (s *Scheduler) SelectNodesForContainer(nodes []*n...阅读全文

博文 2017-06-25 14:02:38 肖楠

Go语言实战笔记(五)| Go 切片

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。 内部实现切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。因为机遇数组实现,所以它的底层的内存是连续非配的,效率非常高,还可以通过索引获得数据,可以迭代以及垃圾回收优化的好处。 切片对象非常小,是因为它是只有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。这3个字段,就是Go语言操作底层数组的元数据,有了它们,我们就可以任意的操作切片了。 声明和初始化切片创建的方式有好几种,我们先看下...阅读全文

博文 2017-07-04 02:20:03 飞雪无情

第五天:golang学习笔记之fmt

★fmt | fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. fmt fmt包提供的最主要的功能只有两个:Print,Scan Print 输出到屏幕的有如下几个函数fmt.Print(),fmt.Println(),fmt.Printf() 实现的基础分别为通过fmt.FPrint(),fmt.FPrintln(),fmt.FPrintf()来输出到sys.stdout 而Sprint和Fprint实现方法类似,只不过前者是返回string(p.buf),而后者是w.Write(p.buf)直接写到Writer里 其实现采用了sync.Pool做对象复用,使用了类似fasthttp的p.buf = p.buf[:0]来做底层数组复用 Scan Scan和Pri...阅读全文

博文 2019-12-19 00:32:42 Macmillan_

《Go in Action》第一章读书笔记

本文为《Go in Action》的第一章读书笔记。 第一章主要是对go语言的一个介绍。 Q: go语言想要解决的问题? A: 原文: The Go team went to great lengths to solve the problems facing software developers today. Developers have to make an uncomfortable choice between rapid development and performance when choosing a language for their projects. Languages like C and C++ offer fast execution, whereas la...阅读全文

博文 2019-10-19 13:02:41 aside section ._1OhGeD

[译] 通过官网 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 有更明确的数字类型命名,支持 Unicode,支持常用数据结构。 WX20190219-003105@2x.png 支持八进制、 十六进制,以及科学记数法。标准库 math 定义了各数字类型取值范围。 a, b, c, d := 071, 0x1F, 1e9, math.MinInt16 空指针值 nil,而非C/C++ NULL。 基本类型应用: bool:只能存true和false uint uint8 uint16 uint32 uint64 uintptr byte // uint8 的别名 :字符类型 rune // int32 的别名,代表一个Unicode码,用UTF-8 进行编码。 rune 类型在什么时候使用呢? 例如需要遍 历字符串中的字符。可以循环每个字节...阅读全文

博文 2019-02-19 03:35:23 weifansym

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