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

golang list slice 删除其中一项比对

slice可以动态添加项(使用append()函数),但是没有删除项的函数。变通方法,可以使用slice重新组合的方式删除一个或多个项,slice是引用类型,存的是指针,性能上不会有太多影响,示例如下:package mainimport "fmt"func main() { s := []int{11, 22, 33, 44, 55, 66} // 原始slice i := 2 // 待删除项索引 s = append(s[:i], s[i+1:]...) // 最后面的“...”不能省略 fmt.Println(s) // 数据结果 [11 22 44 55 66]} 有人回答的很好: 这样是可以实现。不过从slice这种数据结构来看,本身并不适合做删除操作。抛开语言,只谈数据结构,我们...阅读全文

博文 2015-06-10 19:00:01 panda1986_meng

golang type关键字使用

type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef。搞清楚type的使用,就容易理解go语言中的核心概念struct、interface、函数等的使用。以下我用例子代码总结描述,请特别留意代码中的注释。//1、定义结构体 //结构体定义 type person struct { name string //注意后面不能有逗号 age int } func main() { //结构体初始化 p := person{ name: "taozs", //注意后面要加逗号 age: 18, //或者下面的}提到这儿来可以省略逗号 } fmt.Println(p.name) } //初始化字段不一定要全部指定,比如下面也是可以的,name默认取长度为0的空...阅读全文

博文 2018-12-24 18:31:33 u010008759

go方法重载

package main import "fmt" //about receiver function type Student struct { Human school string } type Employer struct { Human company string } type Human struct { name string age int phone string } //implement Human method func (h *Human) SetName(name string) { fmt.Print("human") h.name = name } func (h *Human) SetAge(age int) { h.age = age } func (...阅读全文

博文 2016-06-07 12:00:00 u010165367

Go 方法、接口

在 Go 中,类型可以定义接收此类型的函数,即方法。每个类型都有接口,意味着对那个类型定义了方法集合。 下面定义了结构体类型 S 以及它的两个方法: type S struct { i int } func (p *S) Get() int { return p.i } func (p *S) Put(v int) { p.i = v } 方法 方法就是有接收者的函数。 可以在除了非本地类型(包括内建类型,比如 int)的任意类型上定义方法。然而可以为内建类型定义别名,然后就可以为别名定义方法。如 type Foo int // 为 int 定义别名 Foo func (self Foo) Emit() { fmt.Printf("%v", self) } 接口 接口定义为一个方法的集合。方...阅读全文

golang中list包使用方法

package main import ( "container/list" "fmt" ) func main() { l := list.New() l.PushBack(4) l.PushBack(5) l.PushBack(6) l.PushBack(7) l.PushBack(17) l.PushBack(27) l.PushBack(71) l.PushBack(74) //fmt.Println(l.Back().Value) //fmt.Println(l.Front().Value) for p := l.Front(); p != nil; p = p.Next() { fmt.Println(p.Value) } ...阅读全文

博文 2014-10-04 19:27:07 xlplbo

Go 语言解面试题1

/* 比较一下 :http://blog.csdn.net/iilovetopview/article/details/43745059 go的运算效率逊于D(LDC 编译器0.15.1(LLVM3.6 ,MSVC64))。 用“数学公式”法解下题: 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。 比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么? */ package main import ("fmt" "time" "math" ) var aa map[int]int var Ac []int func main() { fmt.Println("(go Language) Please wait for some minutes,wi...阅读全文

博文 2015-06-17 23:02:37 Iilovetopview

golang 通用Contains方法

今天在群里看见有人写了一个InAarry方法,主要作用是判断一个元素是否在slice中,看完后,我感觉方法应该还有扩展的空间 于是自己重新写了一个Contains方法,可以支持 slice,array,map等类型 package main import ( "errors" "fmt" "reflect" ) // 判断obj是否在target中,target支持的类型arrary,slice,map func Contain(obj interface{}, target interface{}) (bool, error) { targetValue := reflect.ValueOf(target) switch reflect.TypeOf(target).Kind() { ca...阅读全文

博文 2014-10-04 19:26:09 zsbfree

【翻译】go是面向对象语言吗?

文:http://spf13.com/post/is-go-object-oriented 前言 为了真正理解面向对象的含义,我们需要回顾一下这个概念的起源。第一个面向对象语言-simula问世于19世纪60年代。它引入了对象(object)、类(class)、继承(inheritance)、子类(subclass)、虚方法(virtual method)、协程(coroutine)等概念。然而simula最重要的贡献可能是它引入颠覆性的思想——将数据和逻辑完全分离。 你可能不熟悉simula语言,但你肯定熟悉Java, C++, C# & Smalltalk中的一种,这些语言深受simula的影响,当然这些语言又同时影响着现今几乎所有的高级语言如:Objective C, Python, ...阅读全文

博文 2015-06-27 06:00:01 elernino

golang动态调用方法

package main import ( "fmt" "reflect" ) type YourT1 struct { } func (y *YourT1) MethodBar() { fmt.Println("MethodBar called") } type YourT2 struct { } func (y *YourT2) MethodFoo(i int, oo string) { fmt.Println("MethodFoo called", i, oo) } func InvokeObjectMethod(object interface{}, methodName string, args ...interface{}) { inputs := make([]reflect....阅读全文

博文 2014-10-04 19:26:16 ziyouchutuwenwu

golang sync.Once

package main import ( "fmt" "sync" "time" ) var counter int = 0 func main() { var once sync.Once onceBody := func() { time.Sleep(3e9) fmt.Println("Only once") } done := make(chan bool) for i := 0; i < 10; i++ { j := i go func(int) { once.Do(onceBody) fmt.Println(j) done <- true }(j) } //给一部分时间保证能够输出完整【方法一】 //for i := 0; i < 10; i++ { // <-done //} ...阅读全文

博文 2015-04-09 03:00:00 rojas

springboot(四)——@EnableConfigurationProperties是如何起作用的你知道吗

前言 用springboot开发的过程中,我们会用到@ConfigurationProperties注解,主要是用来把properties或者yml配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的,当然在@ConfigurationProperties加入注解的类上加@Component也可以使交于springboot管理。 举个栗子 第一步:创建一个类TestConfigurationProperties @ConfigurationProper...阅读全文

博文 2019-04-25 16:34:50 stone想静静

Golang: 有限状态自动机

有限状态机 又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。 FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概念以及实现。 现实生活中,状态是随处可见的,并且通过不同的状态来做不同的事。比如冷了加衣服;饿了吃饭;困了睡觉等。这里的冷了、饿了、困了是三种不同的状态,并且根据这三个状态的转变驱动了不同行为的产生(加衣服、吃饭和睡觉)。 FSM是什么 所谓有限状态机,就是由有限个状态组成的机器。再看上面举到的例子:人...阅读全文

理解 Go 语言中的方法和接收者

0x01 前言 Go 语言的语法实在有些不一样,与其它面向对象语言相比,Go 的方法似乎有些晦涩。 0x02 方法的定义 在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。 type user struct { name string, email string, } //这是函数的定义 func notify(email string) { fmt.Println("Email is %s", email) } //这是方法的定义 func (u user) notify(email string) { fmt.Println("Email is %d", email) } 我们可以看到,方法是在 func 和 notify 之间多了一个 user ...阅读全文

博文 2017-06-03 09:05:56 daryl

Go 机器学习库 Gorgonia

Gorgonia 是 Go 机器学习库。撰写和评估多维数组的数学公式。与  [Theano](http://deeplearning.net/software/theano/) 和 [TensorFlow](https://www.tensorflow.org/) 理念相似。具体来说, #### Gorgonia 性能: * 执行自动分化 * 执行符号微分 * 优化 梯度下降 * 进行稳定的数值计算 * 提供便捷功能来帮助创建神经网络 * 操作快(与Theano和Tensorflow速度相当) * 支持GPU / CUDA * 支持分布式计...阅读全文

go 中 对方法的认识-相当于类(Class)

0x01 前言Go 语言的语法实在有些不一样,与其它面向对象语言相比,Go 的方法似乎有些晦涩。0x02 方法的定义在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。type user struct { name string, email string, } //这是函数的定义 func notify(email string) { fmt.Println("Email is %s", email) } //这是方法的定义 func (u user) notify(email string) { fmt.Println("Email is %d", email) }我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数...阅读全文

博文 2018-12-24 22:31:01 qq_36308324

Golang算法实战之斗地主<一>

逢年过节,回到老家,玩的最多的就是打麻将、斗地主。今天要说的,就是这个经典游戏——斗地主。 一、斗地主牌面分析 斗地主需要多少张牌?大部分人都知道需要一副完整的牌即可,也就是54张牌。 2-10 黑桃、红桃、梅花、方片各4张。 J、Q、K、A 黑桃、红桃、梅花、方片各4张。 大小王各1张。 在斗地主中,牌的花色不影响。所以,在牌面比对时,不需要单独比对花色。而单张牌面值的大小顺序为: 大王>小王>2>A>K>Q>J>10……3 鉴于此,牌面的表达可以用以下方式来规定: A:黑桃 B:红桃 C:梅花 D:方片 扑克原始值 映射值 3-10 3-10数字 J 11 Q 12 K 13 A 14 2 15 小王 Q88 大王 K99 例如: A14----->黑桃A C9----->梅花9 二、如...阅读全文

博文 2018-11-07 06:34:34 皮卡丘pikaqiu

推荐《机器学习算法原理与编程实践》

 郑捷,www.threedweb.cn网站负责人,研究方向是机器学习与自然语言处理。当前负责的核心产品是高精度自然语言认知系统的设计与研发,研发目标是高精度(识别率在85%~95%)的统一架构的NLP认知系统。  《机器学习算法原理与编程实践》围绕神经网络、智能推理、矩阵计算三大主线,提供近25个经典的算法讲解。解剖有代表性的算法库:Scikit-Learn算法库、OpenCV机器视觉、Theano深度学习库。作为本土原创图书,本书更符合国内人的阅读习惯,适合作为机器学习算法设计的入门读物。 内容简介   《机器学习算法原理与编程实践》是机器学习原理和算法编码实现的基础性读物,内容分为两大主线:单个算法的原理讲解和机器学习理论的发展变迁。算法除包含传统的分类、聚类、预测等...阅读全文

golang 继承与方法重写