首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏面向加薪学习

    10.Go语言-包

    10 章 包 包(package) 用于组织 Go 源代码,提供了更好的可重用性与可读性。 Go 语言有超过 100 个的标准包,可以用 go list std | wc -l 命令查看标准包的具体数目,标准库为大多数的程序提供了必要的基础组件。 例如我们 Go 的第一个程序。 // hello go package main import "fmt" func main() { fmt.Println("《Go语言极简一本通》") } package main 这一行指定该文件属于 package main import ( "fmt" "book" ) func main() { bookName := "《Go语言极简一本通》" author := "欢喜" bookInfo

    45920编辑于 2022-09-04
  • 来自专栏ai_houzi

    go语言基础10-Goroutine

    实例 func main() { for i := 0; i < 1000; i++ { go func(i int) { for { fmt.Printf("我打印的是:%d\n" 轻量级”线程“ 非抢占式多任务处理,由协程主动交出控制权 编译器/解释器/虚拟机层面的多任务 多个协程可能在一个或者多个线程上运行 子程序是协程的一个特例 goroutine的定义 任何函数只需加上go

    43330发布于 2019-04-04
  • 来自专栏开发语言-Go

    Go语言学习10-指针类型

    引言书接上篇,Huazie 带大家了解了Go语言的《结构体类型》,本篇将要介绍Go语言的指针类型。主要内容指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。 Go语言既没有像Java语言那样取消了代码对指针的直接操作的能力,也避免了 C/C++ 语言中由于对指针的滥用而造成的安全和可靠性问题。Go语言的指针类型指代了指向一个给定类型的变量的指针。 指针类型是Go语言的复合类型之一。1. 类型表示法可以通过在任何一个有效的数据类型的左边加入 * 来得到与之对应的指针类型。 数据类型的知识就记到这,下一篇介绍 Go语言数据的使用。 最后附上知名的Go语言开源框架: Skynet: 一个分布式服务框架。它可以帮助我们构建起大规模的分布式应用系统。

    26811编辑于 2024-10-07
  • 来自专栏oracle3技术大杂烩

    2020-10-26 go语言grpc学习

    最新的文档是:https://grpc.io/docs/languages/go/quickstart/ 比较旧的文档是:https://www.bookstack.cn/read/grpc-v1.0 /0.md 主要区别在于proto文件生成go文件,正确的是在examples/helloworld目录下执行: protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative helloworld/helloworld.proto 这样才能一次性生成两个文件,并且不会嵌套一堆目录

    16610编辑于 2022-04-22
  • 来自专栏XinChen's Tec

    GoLang10 - Go语言变量作用域

    Go 语言变量作用域 作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式参数 继续 具体了解局部变量、全局变量和形式参数。 package main import "fmt" // Go语言变量作用域 func main() { // 局部变量 a, b, c := 1, 2, 3 fmt.Printf ```java package main import "fmt" // Go语言变量作用域 // 全局变量 v

    30510编辑于 2023-02-27
  • 来自专栏Golang语言社区

    Go语言10 个实用技术--转

    十条有用的 Go 技术   这里是我过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践。我相信它们具有弹性的。这里的弹性是指:   某个应用需要适配一个灵活的环境。 的兼容性规则(http://golang.org/doc/go1compat)会处理代码。 你的代码总是能编译,并且在以后的 Go 的版本也可以保证这一点。只要在代码集中执行go vet,就可以发现所有的无标签的语法。   4. 10. 为访问 map 增加 setter,getters   如果你重度使用 map 读写数据,那么就为其添加 getter 和 setter 吧。 Go 天生就是个简单的语言,在大多数情况下只会有一种方法来作某事。简单是力量的源泉,也是为什么在人的层面它表现的如此有弹性。   如果必要的话,使用这些基数。

    1.2K70发布于 2018-03-20
  • 来自专栏逆锋起笔

    10 款优雅的 Go 语言开发工具

    1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替代方案。 IntelliJ + Go 插件 这是老牌的IDE了, 也是由JetBrains公司出品, 其本身是支持Java的, 要用作Go语言开发,就需要加上Go插件, 其插件支持基本的开发功能, 例如编译,调试 , 语法高亮,代码补全, 以及对引入库的管理,等等, 5、Gaia 无论是什么编程语言,我们都应该支持自动化,Gaia 是一个开源自动化平台,支持 DevOps,基于 HashiCorp的go-plugin 8、Eclipse+ Go插件 作为开放式IDE的鼻祖,Eclipse怎么可能少了对Go语言的支持, 把GoEclipse插件注册进去,其完整的开放功能就马上配备好。 10、VS Code+ Go插件 不再像以前那么霸道蛮横, 微软这么多年也算做了不少挽回人心的事, 而VSCode的推出, 就算其中一件.

    3.3K21编辑于 2022-03-28
  • 来自专栏雪之梦技术驿站

    go 学习笔记之10 分钟简要理解 go 语言闭包技术

    闭包是主流编程语言中的一种通用技术,常常和函数式编程进行强强联合,本文主要是介绍 Go 语言中什么是闭包以及怎么理解闭包. 如果读者对于 Go 语言的闭包还不是特别清楚的话,可以参考上一篇文章 go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包. 或者也可以直接无视,因为接下来会回顾一下前情概要,现在你准备好了吗? func fibonacciByNormal() { a, b := 0, 1 for i := 0; i < 10; i++ { a, b = b, a+b 1 2 3 5 8 13 21 34 55 func TestFibonacci(t *testing.T) { f := fibonacci() for i := 0; i < 10 简单总结下闭包知识 闭包是一种通用技术,Go 语言支持闭包,主要体现在 Go 支持函数内部嵌套匿名函数,但 Go 不支持普通函数嵌套.

    59210发布于 2019-10-01
  • 来自专栏Mokwing

    golang 学习(10): 使用go语言调用c语言的so动态库

    一、前言 最近在学习go,因为需要调用c语言打包成的so动态库里面的方法,避免自己再去造轮子,所以想直接使用golang调用so,但是参考了其他博客大佬写的,我每一步原封不动的写下来,结果都是一堆错误 二、环境 因为要将c语言打包,会需要借助gcc的工具,Windows 32位可以直接借助MinGW下载,Windows 64位用MinGW的话,后续打包运行的时候会报错,x86_64这样的错误 Linux:Centos7、gcc、go GOROOT:/opt/go GOPATH:/root/go 三、具体步骤 1、在我们的 $GOPATH/src 2、在目录下创建一个c语言的头文件 hi.h 内容如下: void hi(); 3、在目录下创建一个c语言的实现 hi.c 内容如下: #include <stdio.h> void ③、在 go build 的时候指定so的路径: go build -ldflags="-r ./" testc.go ok,到这里我们再次运行,成功! ?

    5.2K10发布于 2020-09-08
  • 来自专栏码洞

    《快学 Go 语言》第 10 课 —— 错误与异常

    Go 语言的异常处理语法绝对是独树一帜,在我见过的诸多高级语言中,Go 语言的错误处理形式就是一朵奇葩。 Go 语言的错误处理在业界饱受批评,不过既然我们已经入了这个坑,那还是好好蹲着吧。 错误接口 Go 语言规定凡是实现了错误接口的对象都是错误对象,这个错误接口只定义了一个方法。 第一个需要注意的是 os.Open()、f.Read() 函数返回了两个值,Go 语言不但允许函数返回两个值,三个值四个值都是可以的,只不过 Go 语言普遍没有使用多返回值的习惯,仅仅是在需要返回错误的时候才会需要两个返回值 体验 Redis 的错误处理 上面读文件的例子并没有让读者感受到错误处理的不爽,下面我们要引入 Go 语言 Redis 的客户端包,来真实体验一下 Go 语言的错误处理有多让人不快。 /practice/main.go:10 +0x122 exit status 2 上面的代码抛出了 negErr,直接导致了程序崩溃,程序最后打印了异常堆栈信息。

    62030发布于 2018-12-19
  • 来自专栏python3

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

    当然可以,要知道GO语言是最懂程序员的哟 :) const PI = 3.1415926535897932 const EluerE = 2.718281828459045 const value = EluerE就相当于public的,而value、width、flag、isRead等就相当于private 2、类型放在常量名的后面 有过Java开发经验的读者都比较熟悉public int value = 10 或C等语言中,一般都是这样定义:const str string = "ok";但在GO中懒得把分号(;)都省略了。 ---- 【编后话】: 开始接触GO,感觉它就是一个大杂烩,里面即有C语言的影子,也有Java语言的影子,也有JavaScript脚本的影子,同时还有Pascal语言的痕迹,但使用使用着感觉这符合人的正常思维 借用知乎用户的话讲:GO语言是一门看似简单实际并不简单,貌似外表丑陋实则另有考究的语言。 ----

    2.4K10发布于 2020-01-07
  • 来自专栏日积月累1024

    Go语言入门经典》10~12章读书笔记

    10章处理错误 10.1 错误处理及Go语言的独特之处 在Go语言中,一种约定是在调用可能出现问题的方法或函数时,返回一个类型为错误的值。 要理解Go语言处理错误的方式,最重要的是明白函数ReadFile接受一个字符串参数,并返回一个字节切片和一个错误值。这个函数的定义如下。 在Go语言中,有一种约定是,如果没有发生错误,返回的错误值将为nil。 这让程序员调用方法或函数时,能够检查它是否像预期那样执行完毕。 10.2 理解错误类型 在Go语言中,错误是一个值。 panic.go:10 +0x79 exit status 2 调用panic后,程序将停止执行,因此打印This is not executed的代码行根本没有机会执行。 11.5 使用Goroutine处理并发操作 Go语言提供了Goroutine,让您能够处理并发操作。

    76910发布于 2020-12-07
  • 来自专栏Golang语言社区

    Go 语言社区】Go语言数组

    Go编程语言提供称为数组的数据结构,其可存储相同类型的元素的一个固定大小的连续集合。数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合。 声明数组 要声明在Go语言数组,程序员指定元素的类型以及如下的数组所需元件的数目: var variable_name [SIZE] variable_type 这就是所谓的一维数组。 例如,要声明一个10个元素的数组为balance,类型float32使用下面的语句: var balance [10] float32 现在balance是一个变量数组,其足以容纳10浮点数。 语言中,应该需要了解更多的细节。 有下列关系到数组几个重要的概念Go程序员是应该清楚的: 概念 描述 多维数组 Go支持多维数组。

    2K150发布于 2018-03-20
  • 来自专栏从流域到海域

    Go语言起源 【Go语言圣经笔记】

    Go语言起源 以下早期语言Go语言的设计产生了重要影响: C Go语言有时候被描述为“C类似语言”,或者是“21世纪的C语言”。 Go从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。 Rob Pike尝试将CSP引入实际的编程语言: Squeak(老鼠间交流的语言)管道静态创建 进版的Newsqueak语言 提供了类似C语言语句和表达式的语法和类似Pascal语言的推导语法 带垃圾回收的纯函数式语言 Alef -> Limbo http://talks.golang.org/2012/concurrency.slide#9 APL iota Scheme 词法作用域与嵌套函数 Go 中的创新设计: 切片 为动态数组提供了有效的随机存取的性能 链表的底层共享机制 defer语句 参考文献 Go语言圣经(简体中文版)

    1.2K20编辑于 2021-12-06
  • 来自专栏从流域到海域

    Go语言指针 【Go语言圣经笔记】

    摘自:Go语言圣经(简体中文版) 2.3.2 指针 一个变量对应一个保存了变量对应类型值的内存空间。 var x, y int fmt.Println(&x == &x, &x == &y, &x == nil) // true false false 在Go语言中,返回函数中局部变量的地址也是安全的 例如下面这个例子就是通过指针来更新变量的值,然后返回更新后的值,可用在一个表达式中(译注:这是对C语言中++v操作的模拟,这里只是为了说明指针的用法,incr函数模拟的做法并不推荐): func incr 指针特别有价值的地方在于我们可以不用名字而访问一个变量,但是这是一把双刃剑:要找到一个变量的所有访问者并不容易,我们必须知道变量全部的别名(译注:这是Go语言的垃圾回收器所做的工作)。 $ go build gopl.io/ch2/echo4 $ ./echo4 a bc def a bc def $ ./echo4 -s / a bc def a/bc/def $ .

    95710编辑于 2021-12-06
  • 来自专栏Golang语言社区

    Go 语言社区】Go 语言Map(集合)

    Go 语言Map(集合) Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

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

    Go 语言社区】Go语言范围规则

    有三个地方变量可以在Go编程语言声明如下: 内部函数或这就是所谓的局部变量块 所有函数的外面的变量称为全局变量 在这被称为形式参数函数的参数的定义 让我们来解释一下什么是局部和全局变量和形式参数。 " func main() { /* local variable declaration */ var a, b, c int /* actual initialization */ a = 10 fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c) 当上述代码被编译和执行时,它产生了以下结果: value of a = 10 int func main() { /* local variable declaration */ var a, b int /* actual initialization */ a = 10 fmt.Printf("value of a = %d, b = %d and g = %d\n", a, b, g) } 当上述代码被编译和执行时,它产生了以下结果: value of a = 10

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

    Go 语言社区】Go语言类型转换

    类型转换是一种可变从一种数据类型转换成另一种数据类型。例如,如果要存储一个long值转成一个简单的整数,那么可以强制类型转换long为int。可以从一种类型使用转换运算符将原类型值转换为另一种类型值,如下: type_name(expression) 例子 请看下面的例子中,产生浮点数运算执行一个整型变量除以另一个数的转换。 package main import "fmt" func main() { var sum int = 17 var count int = 5 var mean float

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

    Go 语言社区】Go 语言函数--转

    Go 语言函数 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数字,则返回数组中包含的函数个数。 ---- 函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } 函数定义解析: func:函数由 num1 } else { result = num2 } return result } 以上实例在 main() 函数中调用 max()函数,执行结果为: 最大值是 : 200 函数返回多个值 Go 默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。

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

    Go 语言社区】Go 语言范围(Range)

    Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、链表(channel)或集合(map)的元素。 for i, c := range "go" { fmt.Println(i, c) } } 以上实例运行输出结果为: sum: 9 index: 1 a -> apple b

    1K100发布于 2018-03-20
领券