首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏沈钦华的专栏

    go语言入门2

    这节讲一下go语言的变量定义。go是静态语言类型,不像python、php语言,它不能在运行期间改变变量的类型(除非进行类型转换,参见 go语言入门扩展--4种类型转换)。 type // x1,x2为同类型var x1, x2 = val1, val2 // x1,x2可以为不同类型,具体类型由编译器根据右边的值进行推断x1, x2 := val1, val2 // i = 2=号左边计算可确定的内存地址: i, dataList[2] =号右边计算可确定的值: dataList[2] , 222因而这个语句等效于:i, dataList[2] = dataList // 同时提供多个iotaconst (m1, n1 = iota, iota // m1=0 n1=0m2, n2 // m2=1 n2=1m3, n3 = "hello", iota // 打断第一个 ("m1=", m1, "n1=", n1) //m1= 0 n1= 0fmt.Println("m2=", m2, "n2=", n2) // m2= 1 n2= 1fmt.Println("m3="

    38110编辑于 2023-11-28
  • 来自专栏机器学习/数据可视化

    Go语言实战-2

    Go Go语言解决的问题:C和C++执行速度快,Python擅长快速开发,Go兼具二者特点。 编译速度快 内置并发机制 自带垃圾回收机制 用户不用自己管理内存 Go语言使用接口作为代码复用的基础模块 goroutine goroutine像线程,占用内存少;使用一个线程来执行多个goroutine Go语言会自动在配置的一组逻辑处理器上调度执行goroutine chanel 通道chanel内置的数据结构,让用户在不同的goroutine之间同步发送具有类型的消息 通道常用于几个运行的goroutine main main函数保存在名为main的包里;Go`语言中每个代码文件都是一个包 一个包定义一组编译过的代码。包的命名类似命名空间 Go 编译器不允许声明导入某个包却不使用。 标识符: 公开的标识符:大写字母开头,能够直接访问 非公开的标识符:小写字母开头,不能直接访问 初始值问题 在Go语言中,所有变量都被初始化为其零值 数值类型:0 字符串类型:空字符串

    34410发布于 2021-03-02
  • 来自专栏Golang语言社区

    Go语言TCP Socket编程--2

    2、写阻塞 TCP 连接通信两端的OS都会为该连接保留数据缓冲,一端调用Write后,实际上数据是写入到OS的协议栈的数据缓冲的。TCP是全双工通信,因此每个方向都 有独立的数据缓冲。 我们来看一个例子:client5.go和 server.go。 Add(time.Microsecond * 10)) 启动server6.go,启动client6.go,我们可以看到写入超时的情况下,Write的返回结果: $go run client6.go 2015 存在一个业务包数据,1/3内容被goroutine-1读走,另外2/3被另外一个goroutine-2读 走的情况。 本文代码实验环境:go 1.5.1 on Darwin amd64以及部分在ubuntu 14.04 amd64。 本文来自:开源中国博客 感谢作者:徐学良 查看原文:Go语言TCP Socket编程

    4.5K110发布于 2018-03-23
  • 来自专栏ai_houzi

    go语言基础2-函数

    fmt.Println( apply(func(a int, b int) int { return int(math.Pow(float64(a), float64(b))) }, 3, 2)

    48520发布于 2019-04-04
  • 来自专栏好好学习吧

    初识Go语言--(2)Hello World

    新建hello.go文件,内容如下 package main import "fmt" func main() { //输出Hello World fmt.Println("Hello

    43220发布于 2018-12-14
  • 来自专栏陶士涵的菜地

    Go语言圣经--JSON习题2

    1.暂时没有存索引 2.使用协程实现,很快 package main import ( "fmt" "net/http" "os" / 1.暂时没有存索引 2.使用协程实现,很快 */ func main() { var urls []string for i := 0; i < 1000; i++ { var content []Xvcd ch := make(chan string) for _, url := range urls { go

    73330发布于 2019-09-10
  • 来自专栏Golang开发

    Go语言核心编程(2)——函数

    注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 函数定义 首字母大小写决定函数在其他包的可见性,大写时其他包可见,小写时只有相同的包可以访问。 多个相邻的同类型的参数可以使用简写模式 不支持默认参数 不支持函数重载 实参与形参 Go 函数实参到形参的传递永远是值拷贝,即使是参数是指针也是值拷贝,传递给形参的是这个指针变量的副本, 二者指向同一地址 这有点类似于 Java 语言中异常处理中的 finaly 子句。 defer 常用于保 证一些资源最终一定能够得到回收和释放。 错误处理 Go 语言内置错误接口类型 error。 任何类型只要实现 Eηor() string 方法,都可以传递 eηor 接口类型变量。 Go 语言典型的错误处理方式是将 error 作为函数最后一个返回值 。 在调用函数 时 , 通过检测其返回的 error 值是否为 nil 来进行错误处理。

    1K20发布于 2019-05-29
  • 来自专栏Golang语言社区

    Golang语言-cache2go使用

    例子:

    95250发布于 2018-03-21
  • 来自专栏写代码和思考

    Go语言基础2 - 控制语句( if, for, switch )

    概述 我们将用几节来学习Go语言基础,本文结构如下: 控制结构 * If -重新声明与再次赋值 * For * Switch -类型选择 控制结构 Go不再使用 do 或 while 循环,只有一个更通用的 for; switch 要更灵活一点; if 和 switch 像 for一样可接受可选的初始化语句; 此外,还有一个包含类型选择和多路通信复用器的新控制结构 最后,Go没有逗号操作符,而 ++ 和 -- 为语句而非表达式。 Switch 其表达式无需为常量或整数,case 语句会自上而下逐一进行求值直到匹配为止。

    65900发布于 2020-03-16
  • 来自专栏陶士涵的菜地

    Go语言圣经-匿名函数习题2

    breadthFirst(crawl, os.Args[1:]) } /* 抓取页面的所有连接 */ func crawl(url string) []string { sum++ go

    58220发布于 2019-09-10
  • 来自专栏Golang语言社区

    Golang语言情怀-第2Go 语言结构

    今天给大家讲解下Go语言程序的结构,首先我们以Hello World为例子讲解, package main import "fmt" func main() { fmt.Println(" Hello World") } package 为Go语言的包名的关键字,package 后面的main为包名,这个是必须存在的,包括开源项目或者同一项目不同文件夹都有自己的包名,且同一工程中不建议使用名字一样的包名 import为Go语言的倒入基础库或者本地包的关键字,“fmt”为Go语言基础库的包,其中提供控制台输出等函数。 func为Go语言的函数定义的关键字,后面紧跟函数名,且Go语言函数不用声明定制直接可以使用。 fmt.Println("Hello World") 为输出 Hello World 总结:本期只是简单的给大家说明Go语言的结构,及简单的关键字而已;大家如果想熟悉更多的关于Go语言的相关的语法等

    48630发布于 2021-01-12
  • 来自专栏全栈工程师修炼之路

    2.Go语言之标准库学习记录(2)

    [TOC] 0x00 Strconv.字符串类型转换库 描述: Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换,主要可以将字符串类型转换为整型(int32 、int64、int、 ,此处go延续了C语言某些函数用法便于C语言程序员的学习理解,因为C语言中没有string类型而是用字符数组(array)表示字符串。 语言天生是支持并发的,所以为了更好方便开发者的基础使用,Go语言中可以使用Sync包提供基本同步原语,如互斥锁。 ,为了确保关闭通道只执行一次,在Go语言中的sync包中提供了一个针对只执行一次场景的解决方案sync.Once。 Go语言的sync包中提供了一个开箱即用的并发安全版的map就是sync.Map。

    66861编辑于 2022-09-29
  • 来自专栏陶士涵的菜地

    Go语言圣经--接口约定习题2

    package main import( "fmt" "bytes" ) func main(){ //定义数组 arr:=[...]int{6,2,1,3,4,5

    42820发布于 2019-09-10
  • 来自专栏全栈工程师修炼之路

    2.Go语言编程学习课后实践

    $ go build && . 当有如下阶梯对应的走法如下: 1 => 1 # 1 2 => 2 # [(1,1) 2] 3 => 3 # [(1,1,1) (1,2) (2,1)] 4 => 5 # f(4) = 2f(4 -2) + f(4-3) 4 => 5 # f(5) = 2f(5-2) + f(5-3) # 优化点,减少递归的次数。 - 3) return 2*x + y } } // # 单元测试 // 注意Test后接的函数名称首字母大写(Go开发规范) func TestStepladder(t *testing.T (注意此时文件名: stepdemotest.go) ➜ testdemo go test -v -bench=.

    92030编辑于 2022-09-29
  • 来自专栏章鱼的慢慢技术路

    Go语言相关练习_选择题(2

    go语言中字符串是UTF-8编码并存储的,它语言不定长的字节,所以它不支持下标操作,因为没一个下标操作代表的是固定长度的字节,所以不能对字符串中某个字符单独赋值。 Go-字符串_极客学院 ? Go语言的语法上是不支持指针运算的,所有指针都在可控的一个范围内使用,没有C语言的*void然后随意转换指针类型这样的东西。 Go语言的指针 & * ? Go语言中 select 和 switch 的比较 ? 基本思路:将引用的外部包的源代码放在当前工程的vendor目录下面,go 1.6以后编译go代码会优先从vendor目录先寻找依赖包。 Go编码规范指南 二、参考资料 Go的异常处理 defer, panic, recover go语言之 panic, recover ——如何在go语言中优雅的处理错误 https://golang.org /pkg/builtin/ 从例子中学习 go 语言 —— 基本语法 从例子中学习 go 语言 —— 数据结构、指针 Go语言中的指针运算 Go语言并发模型:使用 select golang的select

    1.3K20发布于 2018-08-03
  • Go语言中的OAuth2认证

    Go中实现OAuth2认证在Go语言中实现OAuth2认证需要一些准备工作和步骤,包括安装必要的库、创建OAuth2配置和实现授权码授权流程。 安装必要的库在开始之前,您需要安装Go语言中与OAuth2相关的库,最常用的是golang.org/x/oauth2和golang.org/x/oauth2/google(如果您要与Google的OAuth2 您可以使用Go模块来安装这些库:go get -u golang.org/x/oauth2go get -u golang.org/x/oauth2/google创建OAuth2配置在实现OAuth2认证之前 以下是在Go语言中实现授权码授权流程的基本示例:package mainimport ( "fmt" "net/http" "golang.org/x/oauth2")var ( 示例代码演示在本节中,我们将演示如何使用Go语言实现基本的OAuth2认证流程,并获取访问令牌后调用API。

    2.3K10编辑于 2024-04-15
  • 来自专栏火属性小虫

    Go语言学习笔记2一 Golang的基础2

    , 21 2月 2023 作者 847954981@qq.com Go学习 Go语言学习笔记2一 Golang的基础2 Golang包的引入存在几个注意点 包的引入是从$GOPATH/src后开始计算的 在新版Golang中,需要使用项目管理器,现在项目目录下使用 go mod init xxxx创建项目,同一项目可以直接import package包的声明建议这个包和所在的文件夹同名。 函数调用时,如果函数名首字母大写,表示该函数公开,可以调用,反之表示私有 init函数 每个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用。 func init(){} 如果源文件存在全局变量的定义,则优先于init方法 如果多个源文件存在init方法,先由main文件运行,再由其他文件运行 匿名函数 Go支持匿名函数,这个函数方法只会使用一次 匿名函数以外的变量num func main(){ f := getSum() fmt.Println(f(1))//1 fmt.Println(f(2)

    38030编辑于 2023-02-22
  • 来自专栏python3

    Go语言】【3】GO语言常量

    还有复数常量,如3+2i 二、常量 和其它语言(C、C++、Java等)类似,由const关键字修饰,例如: const PI float64 = 3.1415926535897932 const EluerE 当然可以,要知道GO语言是最懂程序员的哟 :) const PI = 3.1415926535897932 const EluerE = 2.718281828459045 const value = 255 >> 2 这点与其它语言类似,也容易理解,若右值是运行期才能得到的结果表达式 const Port = os.GetEnv("Port") 那么在编译期并不能确定该值,会出现编译错误 四、预定义常量 ---- 【编后话】: 开始接触GO,感觉它就是一个大杂烩,里面即有C语言的影子,也有Java语言的影子,也有JavaScript脚本的影子,同时还有Pascal语言的痕迹,但使用使用着感觉这符合人的正常思维 借用知乎用户的话讲:GO语言是一门看似简单实际并不简单,貌似外表丑陋实则另有考究的语言。 ----

    2.4K10发布于 2020-01-07
  • 来自专栏Golang语言社区

    Go 语言社区】Go语言数组

    Go编程语言提供称为数组的数据结构,其可存储相同类型的元素的一个固定大小的连续集合。数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合。 声明数组 要声明在Go语言数组,程序员指定元素的类型以及如下的数组所需元件的数目: var variable_name [SIZE] variable_type 这就是所谓的一维数组。 Element[%d] = %d\n", j, n[j] ) } } 让我们编译和运行上面的程序,这将产生以下结果: Element[0] = 100 Element[1] = 101 Element[2] 语言中,应该需要了解更多的细节。 有下列关系到数组几个重要的概念Go程序员是应该清楚的: 概念 描述 多维数组 Go支持多维数组。

    2K150发布于 2018-03-20
  • 来自专栏Golang语言社区

    Go语言并发模型的2种编程方案

    概述 我一直在找一种好的方法来解释 go 语言的并发模型: 不要通过共享内存来通信,相反,应该通过通信来共享内存 但是没有发现一个好的解释来满足我下面的需求: 1.通过一个例子来说明最初的问题 2.提供一个共享内存的解决方案 获取余额 80 | 80 2. 取钱 -30 | -10 3. 当前剩余 50 | 70 ... | ... 4. 解决办法 我们通过两种方法来解决这个问题: 1.共享内存的解决方案 2.通过通信的解决方案 所有的解决方案都是简单的封装了一下 SimpleAccount 来实现保护机制。 b.Balance() | 2. ch -> [acc.balances]-> ch 3. 这也就是为什么除了描述出来的这些以外,第2-4步没有别的操作执行。 总结 这篇博客描述了问题以及问题的解决办法,但那时没有深入去探究不同解决办法的优缺点。

    88090发布于 2018-03-23
领券