golang 简介来历很久以前,有一个IT公司,这公司有个传统,允许员工拥有20%自由时间来开发实验性项目。在2007的某一天,公司的几个大牛,正在用c++开发一些比较繁琐但是核心的工作,主要包括庞大的分布式集群,大牛觉得很闹心,后来c++委员会来他们公司演讲,说c++将要添加大概35种新特性。这几个大牛的其中一个人,名为:Rob Pike,听后心中一万个xxx飘过,“c++特性还不够多吗?简
转载
2024-05-22 13:37:34
20阅读
_ 在golang 中有好多尤其的作用,以下是一个简单的整理(部分内容参考简书一个哥们的) 包导入 主要是调用init 函数(比如数据库驱动的注册) import ( _ "github.com/mydemo/dbdriver" ) 返回值 主要是忽略某个值 _,err := callFunc()
原创
2021-07-16 17:48:00
1192阅读
接口(interface)的用法和介绍golang 中的接口(interface)golang 中的接口是一种抽象数据类型,golang 中接口定义了对象的行为规范,只定义规范不实现。接口中定义的规范由具体的对象来实现通俗的讲接口就一个标准,它是对一个对象的行为和规范进行约定,约定实现接口的对象必须得按照接口的规范golang 中的接口(interface)的定义在 golang 中接口(inte
转载
2024-04-19 12:37:03
46阅读
C 语言的 #include一上来不太好说明白 Go 语言里 //go: 是什么,我们先来看下非常简单,也是几乎每个写代码的人都知道的东西:C 语言的 #include。我猜,大部分人第一行代码都是 #include 吧。完整的就是#include <stdio.h>。意思很简单,引入一个
转载
2022-12-05 22:21:34
116阅读
原创
2022-03-07 10:03:27
122阅读
先举个栗子,全局作用域变量,与 := 符号声明赋值新变量 局部变量 在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。 以下实例中 main() 函数使用了局部变量 a, b, c: package main import "fmt" func main()
原创
2021-05-11 15:08:07
439阅读
1.背景在计算机领域中,状态机是一个比较基础的概念。在我们的日常生活中,我们可以看到许多状态机的例子,如:交通信号灯、电梯、自动售货机等。
基于FSM的编程也是一个强大的工具,可以对复杂的状态转换进行建模,可以大大简化我们的程序2.什么是状态机有限状态机FSM火简称状态机,是一种计算的数学模型。它是一个抽象的机器,再任何时间都可以处于有限的状态之一。FSM可以根据一些输入从一个状态转变为另一个状态
转载
2024-10-11 22:22:59
40阅读
一、读取小文件:ioutil.ReadFile()读取文件的内容并显示在终端(使用ioutil一次将文件读取到内存中),这种方式适用于读取小文件:package main
import (
"fmt"
"io/ioutil"
)
func main(){
content, error := ioutil.ReadFile("E:/a.txt")
if error
(1)函数内部申明/定义的变量叫局部变量,作用域仅限于函数的内部; (2)函数外部申明/定义的变量叫全局变量,作用域在整个包都有效,如果其首字母为大写,则作用域是整个程序; (3)如果变量是在一个代码块内,比如在if/for中,那么这个变量的作用域就该代码块内;
转载
2019-11-19 15:07:00
79阅读
2评论
Golang Flag基本使用os.Argsflag包参数类型定义命令行flag参数flag.Type()flag.TypeVar()flag.Parse()flag其他函数实例os.Args如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。func main() {
if len(os.Args) > 0 {
for index, arg
转载
2023-10-25 11:44:06
65阅读
底层实现Go的GMP模型G(Goroutine): 即Go协程,每个go关键字都会创建一个协程。M(Machine):工作线程,在Go中称为Machine,数量对应真实的CPU数(真正干活的对象)。P(Processor): 处理器(Go中定义的一个摡念,非CPU),包含运行Go代码的必要资源,用来调度 G 和 M 之间的关联关系,其数量可通过 GOMAXPROCS() 来设置,默认为核心数。M必
转载
2023-12-09 15:06:33
64阅读
首先golang中协程golang是用户线程与系统线程的对应关系是多对多,既能利用多核cpu资源,也能尽可能减少上下文切换成本,代价是go需要实现复杂的goroutine调度机制。N:1,所有用户线程对应1个系统线程,无法利用多核cpu;1:1,1个用户线程对应一个系统线程,上下文切换成本高。调度逻辑四个结构体M:Machine,操作系统线程。一个M被创建后会在P空闲队列中获取P进行绑定,未绑定则
转载
2024-03-19 21:46:19
8阅读
用法一: 为函数设置不定长度的参数 func myPrint(x ...interface{}) { for _, v := range x { fmt.Println(v) } } 用法二: 为数组设置默认长度 a := [...]int{12, 32, 12} // [12 32 12] 3 3 ...
转载
2021-08-17 14:56:00
377阅读
2评论
golang GOPROXY及GOPRIVATE的设置及作用
原创
2022-03-03 13:43:33
913阅读
包,我们可以在不同的Goroutine之间传递上下文信息,控制Goroutine的生命周期,并实现优雅的退出和取消操作。通过传递上下
原创
2023-11-14 14:00:51
102阅读
作用域是已声明标识符所表示的常量、变量、类型、函数或包在源代码中的作用范围。Go语言可以在三个地方声明变量:函数体内定义的变量,称为局部变量函数体外定义的变量,称为全局变量函数定义中的变量,称为形式参数在编程中,变量在实现了功能后,其作用域越小,可能造成问题的概率就越小。每个变量代表一个状态,有状态的地方就可能被修改。函数的局部变量只会影响一个函数的执行,但全局变量可能会影响所有代码的执行状态,因
转载
2023-12-11 02:09:42
69阅读
defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 defer的用途
在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在函数执行完
毕后,及
原创
2019-02-27 23:34:18
1567阅读
https://studygolang.com/articles/18541?fr=sidebar defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 ...
转载
2021-08-26 20:44:00
156阅读
2评论
当项目目录下有 vendor 目录时,go 工具链会优先使用 vendor 内的包进行编译、测试等。Godep 通过扫描项目文件引入的第三方包,将依赖包的代码复制到 vendor
Go 语言变量作用域作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明:函数内部定义的变量称为局部变量函数外部定义的变量称为全局变量函数定义中传的变量称为形式参数 局部变量在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。栗子~ 1 package main
2
3
转载
2023-08-04 13:33:29
115阅读