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

Go 并发模型:管道和取消

简介 Golang的原子并发特性使得它很容易构造流数据管道,这使得Golang可有效的使用I/O和多CPU特性。本文提出一些关于管道的示例,在这个过程中突出了操作失败的微妙之处和介绍处理失败的具体技术。 什么是管道 在Golang对于管道没有明确的定义;它只是许多种并发程序中的一种。管道是通道连接的一系列阶段, 每个阶段是一组goroutine运行相同的功能。在每个阶段,goroutine运行步骤为: 从上游经过入境通道接受值 对数据执行一些功能操作,通常会产生新的值 从下游经过出境通道发送值 除了开始和最后阶段只有一个入境通道或者一个出境通道外,其他每个阶段有任意数量的入境通道和出境通道,。开始阶段有时又称为源或者生产者;最后一个阶段又称为sink或者消费者。 我们将开始一个简单的示例来解...阅读全文

博文 2014-10-10 08:00:02 漠天, 徐继开, yxrykds, lidashuang,

golang语言渐入佳境[24]-string-大小写转换类函数

string-大小写转换类函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package mainimport ( "fmt" "strings")/*1、func Title(s string) string将字符串s每个单词首字母大写返回2、func ToLower(s string) string将字符串s转换成小写返回3、func ToLowerSpecial(_case unicode.SpecialCase, s string) string将字符串s中所有字符按_case指定的映射转换成小写...阅读全文

博文 2018-12-06 03:35:16 jonson_jackson

golang语言渐入佳境[29]-math包核心方法

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586package mainimport ("fmt""math")/*1、func IsNaN(f float64) (is bool) ● 报告f是否表示一个NaN(Not A Number)值。2、func Ceil(x float64) float64 ● 返回不小于x的最小整数(的浮点值)3、func Floor(x float64) float64 ● 返回不大于...阅读全文

博文 2018-12-12 00:35:18 jonson_jackson

golang语言渐入佳境[16]-结构体拷贝

结构体拷贝12345678910111213141516171819202122232425262728type Dog struct { name string color string age int8 kind string}func main() {//1、struct是值类型,默认的复制就是深拷贝 d1 := Dog{"豆豆", "黑色", 2, "二哈"} fmt.Printf("d1: %T , %v , %p \n", d1, d1, &d1) d2 := d1 //值拷贝 fmt.Printf("d2: %T , %v , %p \n", d2, d2, &d2) d2.name = "毛毛" fmt.Println("d2修改后:", d2) fmt.Println("d...阅读全文

博文 2018-12-06 03:35:15 jonson_jackson

go语言渐入佳境[8]-loop

123456789101112package mainimport ( "fmt")func main(){ //调用 loop1() sum2()}第1种形式12345678func loop1(){//形式1for i:=0;i<10;i++{ fmt.Println(i) }}第2种形式12345678func loop2(){//形式二 i:=0for ;i<10;i++{ fmt.Println(i) }}第3种形式1234567891011func loop3(){//第三种形式 i:=0for ;;i++{if(i>20){break } fmt.Println(i) }}第4种形式1234567891011func loop4(){//第四种形式 i:=0for ; ; {i...阅读全文

博文 2018-12-04 23:35:16 jonson_jackson

假期怎么做客服能让用户为你点赞

春节长假已渐入尾声,在这个假期,你的客户服务做到位了吗? 假期不仅能给企业带来商机,同时也是吸引用户并得到产品认可的好机会。举国欢腾喜迎佳(fang)节(jia)之际,产品用户量呈明显上升趋势,与此同时你的客服人员却在享受悠闲的假期。此时如何跟进客户服务,让你的用户为你点赞? ![image001.jpg](//dn-cnode.qbox.me/FoKyqJhbqUWPtcsCr_gLD769q4_R) 糟糕的客户服务,不仅会导致用户的不满,更可能会让企业错失市场良机。即便在假期,当用户遇到问题,企业也应迅速做出回应。毕竟在用户看来,棘手的问题duang的一下就被搞定,这样的体验简直棒极了,满意度将直线提升。 那么问题来了,如何让企业既能把握假期商机,又那能让客服人员安...阅读全文

golang四舍五入、五舍六入

package main import ( "dog/util/val" "fmt" "log" "strconv" ) func main() { // 四舍五入 log.Println(strconv.FormatFloat(1.234567, 'f', 3, 64)) // 五舍六入 log.Println(val.Decimal(1.2345, 3)) log.Println(val.Decimal(1.2346, 3)) } func Decimal(value float64, bit int) float64 { value, _ = strconv.ParseFloat(fmt.Sprintf("%."+strconv.Itoa(bit)+"f", value), 64) r...阅读全文

博文 2019-08-28 11:32:49 不浪人

golang语言渐入佳境[25]-string-trim修剪类函数

string-trim修剪类函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105package mainimport ("fmt""strings""unicode")/*1、func Trim(s string, cutset string) string将字符串s中首尾包含cutset中的任一字符去掉返回2、func TrimF...阅读全文

博文 2018-12-12 00:35:17 jonson_jackson

golang中往channel写入数据的时候,能不能指定从头部写入还是从尾部写入?

RT,业务场景需要,从channel读出数据后,如果处理失败,需要把数据再丢入channel,再处理。但是因为数据有一定的顺序(不能把失败的数据写到channel的尾部),所以我再把失败的数据丢入channel准备重试的时候,需要丢到channel的头部,然后再读出来进行重...阅读全文

golang语言渐入佳境[30]-rand-package

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566package mainimport ( "fmt" "math/rand" "time")func main() { randTest() randAnswer()}func randTest() { //1、通过默认的随机数种子获取随机数. //系统默认的rand对象,随机种子默认都是1 fmt.Println(rand.Int()) fmt.Println(rand.Intn(50)) fmt.Println(rand.Float64()) /...阅读全文

博文 2018-12-12 00:35:18 jonson_jackson

golang语言渐入佳境[21]-string类型详解

string的本质string是一个引用类型,string包含了两个部分。一个部分是指针,指向了底层的一个字节数组。另一个部分是字节数组的长度。当复制字符串时,也只是复制了指针与长度。底层的那个字节数组是不能够改变的。字符串使用UTF-8编码。打印字符串12345func main(){ str := "跟着建勋老师学编程" fmt.Println([]byte(str)) // 转换为字节数组}转换为字节数组1234func main(){ str := "跟着建勋老师学编程" fmt.Println([]byte(str))}字符串中特殊字符12345678910\a U+0007 alert or bell\b U+0008 backspace\f U+000C form feed\n...阅读全文

博文 2018-12-06 03:35:15 jonson_jackson

golang语言渐入佳境[22]-string检索类函数

string检索类函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142package mainimport ( ...阅读全文

博文 2018-12-06 03:35:16 jonson_jackson

go语言渐入佳境-网络[5]-tcpaddr

TCPAddrtype TCPAddr struct {IP IPPort int}ResolveTCPAddr函数用于创建TCPAddr其中参数net是“tcp”,“tcp4”或“tcp6”之一,addr是由主机名或IP地址组成的字符串,后跟“:”后面的端口号,例如“www.google.com:80“或”127.0.0.1:22“。客户端测试服务器ListenTCP为服务器监听端口,Accept代表锁住,等待客户端连接多线程服务...阅读全文

博文 2020-01-15 01:33:12 jonson_jackson

go语言渐入佳境[6]-operator运算符

运算符和其他语言一样,Go语言支持多种运算符,用于对变量进行运算。12345678910111213package mainimport "fmt"func main(){ //math() //relation() //logic() //wei() Assign()}算术运算符123456789101112func math(){ a := 4 b:=2 fmt.Printf("a+b的结果为:%d\n", a+b) fmt.Printf("a-b的结果为:%d\n", a-b) fmt.Printf("a*b的结果为:%d\n", a*b) fmt.Printf("a/b的结果为:%d\n", a/b)}关系运算符123456789101112131415161718192021222...阅读全文

博文 2018-12-04 00:35:13 jonson_jackson

Golang使用扇入法寻找素数

pips/pip_prime.go package pips import ( "sync" ) type PrimePip struct { } func NewPrimePip() *PrimePip { primePip := &PrimePip{} return primePip } func (primePip *PrimePip) RepeatFn( done <-chan interface{}, fn func() interface{}, ) <-chan interface{} { valueStream := make(chan interface{}) go func() { defer close(valueStream) for { select { case <...阅读全文

博文 2019-06-17 23:32:41 FredricZhu

go语言渐入佳境-网络[2]-ipmask

IPMaskipmask存储掩码,掩码是指定ip地址中前多少位是网络地址的。type IPMask []byte测试本文链接: https://dreamerjonson.com/2019/01/18/go-network-2-ipmask/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处! go语言交流2群:71338526...阅读全文

博文 2020-01-09 23:33:19 jonson_jackson

Go学习之Channel的一些模式

除了在goroutine之间安全的传递数据之外,在看了《Concurrency in Go》之后,感慨channel还有那么多模式可供使用,在个人的学习中总结了以下几种常用的模式 pipeline 概念 我们以爬虫为例,一般爬虫分为如下步骤: 抓取页面 -> 解析页面 -> 整合数据分析 -> 分析结果入库 如果你把上面所有的步骤都放在一个函数里面处理,那会是多难看,多难以维护,从解耦角度考虑,我们可以起四个进程,分别承担不同的角色,例如,进程1负责抓取页面, 进程2负责解析页面,等等,各个进程拿到一个数据后,交给下一个进程来处理,这就是pipeline的基本思想,每个角色只负责关心自己的东西 示例 给定一个数n,执行 (n2 + 1) 2的操作 func pipeline() { gene...阅读全文

博文 2019-08-15 21:02:37 tyloafer

go语言渐入佳境[12]-array

数组声明与定义1234//声明三种方式var arr [3]intvar arr2 = [4]int{1,2,3,4}arr4 :=[...] int{2,3,4}打印数组1fmt.Println(arr4)数组类型1fmt.Printf("类型arr3: %T,类型arr4: %T\n",arr3,arr4)数组长度与下标12fmt.Println("arr3的长度为:",len(arr3))fmt.Println("arr3的下标为2:",arr3[2])##遍历数组两种方式12345678910//遍历数组for i:=0;i阅读全文

博文 2018-12-04 23:35:17 jonson_jackson

go语言渐入佳境-网络[3]-IPAddr

IPAddrtype IPAddr {IP IP}此类型的主要用途是对IP主机名执行DNS查找。测试ResolveIPAddr函数将对主机名执行DNS查找,并返回单个IP地址。但是,主机可能有多个IP地址,通常来自多个网卡。它们也可能有多个主机名,充当别名。其中一个地址将被标记为“规范(canonical)”主机名。如果您希望找到规范名称,请使用。测试2本文链接: https://dreamerjonson.com/2019/01/18/go-network-3-IPAddr/版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处! go语言交流2群:71338526...阅读全文

博文 2020-01-09 23:33:19 jonson_jackson

golang语言渐入佳境[19]-从go源代码读懂interface接口

go源代码中的接口http库中,get方法:1func Get(url string) (resp *Response, err error)Response:123456789type Response struct { Status string // e.g. "200 OK" StatusCode int // e.g. 200 Proto string // e.g. "HTTP/1.0" ProtoMajor int // e.g. 1 ProtoMinor int // e.g. 0 Header Header Body io.ReadCloserio.ReadCloser:1234type ReadCloser interface { Reader Closer}Reader...阅读全文

博文 2018-12-06 03:35:15 jonson_jackson

golang语言渐入佳境[17]-mapping表

mapping 声明12345678910111213//1、声明map的方式1var map1 map[string]string//2、声明map的方式2map2 := make(map[string]string)//3、map中key可以是:int、float、bool、string、数组// 一定不可以是:切片、函数、mapvar m1 map[int]stringvar m2 map[float64]stringvar m3 map[bool]stringvar m4 map[string]stringmapping定义与初始化1、声明时同时初始化123456789101112var country = map[string]string{ "China": "Beijing",...阅读全文

博文 2018-12-06 03:35:15 jonson_jackson

go语言渐入佳境[9]-doubleloop

循环嵌套 一般形式12345678910111213package mainimport "fmt"func main(){ var sum int for i:=0;i<5;i++{ for j:=0;j<3;j++{ sum = i*j } } fmt.Println(sum)}双for循环案例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210...阅读全文

博文 2018-12-04 23:35:16 jonson_jackson

golang语言渐入佳境[28]-time包核心方法

time包核心方法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915...阅读全文

博文 2018-12-12 00:35:17 jonson_jackson

go语言渐入佳境[5]-printf格式化打印

golang输出的格式化打印1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport "fmt"func main(){ //通用的格式 str:="jonson" fmt.Printf("%T,%v\n",str,str) //布尔 var booeanl = true fmt.Printf("%T,%t\n",booeanl,booeanl) //特殊字符 fmt.Printf("%%\n") fmt.Printf("\"\n") fmt.Printf("\\\n") //整数 fmt.Printf("%T,%d\n",123,...阅读全文

博文 2018-12-04 00:35:13 jonson_jackson

按量付费实例批量更改实例带宽

摘要: 为了满足按量付费的灵活性,我们开放了批量的更改网络带宽,近期还将发布更改实例规格的功能。 如何更改按量付费实例的带宽 控制台 1.登陆控制台后进入实例列表,勾选要更改带宽的实例。在批量操作栏中更多操作项中点击更改带宽;或在指定实例更多操作项中点击更改带宽。 image image 2.批量更改带宽时,如果选择了多种带宽付费类型的实例,需要先确认本次期望修改的带宽付费类型是按使用流量或按固定带宽,选择带宽付费类型后,会检测用户勾选的实例,符合条件的实例会显示出当前带宽的付费类型以及带宽值,如果实例不符合条件会将其丢入不可操作列表并说明原因。 image image 3.点击批量更改按钮设置期望的带宽值,点击确定后会在**更改带宽**列显示期望的带宽值。检查无误...阅读全文

golang语言渐入佳境[23]-string分割类函数

string分割类函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package mainimport ( "fmt" "strings" "unicode")/*1、func Fields(s string) []string将字符串s以空白字符分割,返回一个切片2、func FieldsFunc(s string, f func(rune) bool) []string将字符串s以满足f(r)==true的字符分割,返回一个切片3、func Split(s, sep string) []string将...阅读全文

博文 2018-12-06 03:35:16 jonson_jackson

golang语言渐入佳境[27]-其他类型转string函数

其他类型转string函数1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071package mainimport ("fmt""strconv")/*1、func Itoa(i int) stringItoa 是 FormatInt(int64(i), 10) 的缩写。2、func FormatInt(i int64, base int) stringFormatInt 返回给定基数中的i的字符串表示,对于2 <= base <= 36.结果对于数字值> = 10使用小写字母 '...阅读全文

博文 2018-12-12 00:35:17 jonson_jackson

golang语言渐入佳境[26]-string转其他类型函数

string转其他类型函数12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788package mainimport ("strconv""fmt")/*1、func Atoi(s string) (int, error)Atoi 返回 ParseInt(s, 10, 0) 转换为 int 类型的结果。【alphabet:字母】2、func ParseInt(s string, base int, bitSize i...阅读全文

博文 2018-12-12 00:35:17 jonson_jackson

go语言渐入佳境[11]-function2

匿名函数123456789101112131415161718192021222324252627282930313233package mainimport ( "fmt" "math")//匿名函数func main(){ //无参匿名函数 func(){ fmt.Println("jonson") }() //有参匿名函数 func(data int){ fmt.Println("data:",data) }(5) //有返回值的匿名函数 result:=func(data float64) float64{ return math.Sqrt(data) }(9) fmt.Println("result:",result) //函数表达式 greet:=func(){ fmt.Prin...阅读全文

博文 2018-12-04 23:35:17 jonson_jackson

golang语言渐入佳境[31]-错误处理

12345678910111213//1、创建error对象的方式1 err1 := errors.New("自己创建的错误!") fmt.Println(err1.Error()) fmt.Println(err1) fmt.Printf("err1的类型:%T\n", err1) //*errors.errorString fmt.Println("-----------------") //2、创建error对象的方式2 err2 := fmt.Errorf("错误的类型%d", 10) fmt.Println(err2.Error()) fmt.Println(err2) fmt.Printf("err2的类型:%T\n", err2) //*errors.errorString f...阅读全文

博文 2018-12-12 00:35:18 jonson_jackson

go语言渐入佳境[10]-function

无参函数123func printstring(){ fmt.Println("hello jonson")}带参函数123func add(a,b int){ fmt.Println("a+b=",a+b)}返回值123func addres(a,b int) int{ return a+b}有名字的返回值1234func addresname(a,b int)(sum int){ sum = a+b return}多返回值123456func addmuti(a,b int)(int,int){ add := a+b mul:= a*b return add,mul}不定个数参数1234567func addsum(nums ... int) int{ var sum int for _...阅读全文

博文 2018-12-04 23:35:17 jonson_jackson

go语言渐入佳境-网络[4]-port

端口port服务器运行在主机上。 IP地址将定位主机。但是在每台计算机上可能有很多服务,需要一种简单的方法来区分它们。 TCP,UDP,SCTP等使用的方法是使用端口号。有许多“标准”端口。 Telnet通常使用端口23,TCP协议。 DNS使用端口53,使用TCP或UDP。 FTP使用端口21和20,一个用于命令,另一个用于数据传输。HTTP通常使用端口80,但它通常使用端口8000,8080和8088,所有端口都使用TCP。在Unix系统上,常用端口列在文件/etc/services中。 Go具有查询此文件的功能测...阅读全文

博文 2020-01-14 22:33:14 jonson_jackson

golang语言渐入佳境[31]-错误处理

12345678910111213//1、创建error对象的方式1 err1 := errors.New("自己创建的错误!") fmt.Println(err1.Error()) fmt.Println(err1) fmt.Printf("err1的类型:%T\n", err1) //*errors.errorString fmt.Println("-----------------") //2、创建error对象的方式2 err2 := fmt.Errorf("错误的类型%d", 10) fmt.Println(err2.Error()) fmt.Println(err2) fmt.Printf("err2的类型:%T\n", err2) //*errors.errorString f...阅读全文

博文 2019-02-21 15:35:51 jonson_jackson