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

leetcode_459

Golang: 思路:这题难道就是区别优秀程序员和一般程序员的那种智商题吗?正确思路是:将两个s字符串拼接起来,如果拼接好的字符串去头掐尾,里面还会出现s的话,就可以知道它是重复字符串了。大佬们一行就能解决了,而我。。。 我自己的代码如下(不建议看): func repeatedSubstringPattern(s string) bool { i:=0 for i阅读全文

博文 2020-01-30 21:32:39 淳属虚构

Golang学习 - unicode 包

const ( MaxRune = '\U0010FFFF' // Unicode 码点的最大值 ReplacementChar = '\uFFFD' // 表示无效的码点 MaxASCII = '\u007F' // 最大 ASCII 值 MaxLatin1 = '\u00FF' // 最大 Latin-1 值 ) // 判断字符 r 是否在 rangtab 范围内。 // 可用的 RangeTable 参见 go/src/unicode/tables.go。 func Is(rangeTab *RangeTable, r rune) bool // RangeTable 定义一个 Unicode 码点集合,包含 16 位和 32 位两个范围列表。 // 这两个列表必须经过排序而且不能重叠...阅读全文

博文 2019-04-19 18:34:40 佛心看世界

Go Web编程--使用bcrpyt哈希用户密码

上一期的文章《我们应该如何保护用户的密码》里我们介绍了bcrypt相较于MD5,SHA-1...SHA-256等哈希算法更适合用于做密码的哈希,原因就是bcrypt算法哈希字符串的速度远远慢于上面列举的那些算法。这样即使整个用户密码库被用户盗用后想要通过彩虹表和暴力破解的方法猜测出用户的密码代价会非常高昂。今天的文章里就主要来看一下bcrypt哈希的组成部分以及在Go语言里如何使用bcrypt对密码字符串进行哈希。 bcrypt哈希字符串的组成 bcrypt哈希由多个部分组成。这些部分用于确定创建哈希的设置,从而可以在不需要任何其他信息的情况下对其进行验证。 上图是一个bcrypt哈希的示例图,其由四部分组成: Prefix说明了使用的bcrypt的版本 Cost是进行哈希的次数-数字越大生...阅读全文

博文 2020-04-13 11:32:44 Kevin

golang 基础(19)字符串

square-gopher.png 字符和字符串处理 func main(){ s := "Yes我爱Go!" fmt.Printf("%s\n",[]byte(s)) } 这样打印出是就是 "Yes我爱Go!"、打印一下(fmt.Println(len(s)))输出 s 长度为 12 。那么这个 12 是怎么来的呢。 fmt.Printf("%X\n",[]byte(s)) 可以打印出里面具体字节的数字,会使用 %X 来打印字节 596573E68891E788B1476F21 这样并不便于观察,我们可以通过 for 循环来讲字符一个一个打印出来 for _, b := range []byte(s){ fmt.Printf("%X ",b) } fmt.Println() 59 65 7...阅读全文

golang-101-hacks(10)——String

注:本文是对golang-101-hacks中文翻译。 在Go中string是由不可变的字节数组构成的。一旦赋值,就不能修改字符串的值。例如 In Go, string is an immutable array of bytes. So if created, we can't change its value. E.g.: package main func main() { s := "Hello" s[0] = 'h' } 编译结果会提示错误: The compiler will complain: cannot assign to s[0] 对字符串的修改可以将其转换为“byte”数组。但是实际上您并没有对原始字符串进行修改操作,改变的只是一个原始字符串的副本。 To modify...阅读全文

博文 2019-05-30 23:34:40 羊羽share

3. golang 流程控制

3.1 if if a > 4 { return 0 } 3.2 for arr := []int{1, 2, 3, 4, 5} for i := 0; i < len(arr); i++ { fmt.Println(i) } n := len(arr) for n >0 { fmt.Println(n) } 3.3 switch var i = 4 switch i { case 0: fmt.Println("0") case 1: fmt.Println("1") case 2: fmt.Println("2") default: fmt.Println("Default") } 3.4 range for k,v := range arr { fmt.Printf("arr[%v] ...阅读全文

博文 2017-10-23 08:03:20 antic

Go语言中其他数据与字符串类型的转换

## 1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型。比如整型和字符串转换,字符串和布尔型的转换等。本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的转换,和 strconv 包的使用。 ## 2 与切片的转换 切片类型可以和字符串类型相互转换。 ``` fmt.Println([]rune("Hello小韩说课")) // [72 101 108 108 111 23567 38889 35828 35838] fmt.Println(string([]rune{72, 101, 108, 108, 111, 23567, 38889, 35828, 35838})) // Hello小韩说课 fmt.Println([]byte("...阅读全文

博文 2018-10-30 22:28:30 hanzkering

前端遇上Go: 静态资源增量更新的新实践

来源:美团点评技术团队 链接:https://tech.meituan.com/2018/07/05/fe-and-golang.html 为什么要做增量更新 美团金融的业务在过去的一段时间里发展非常快速。在业务增长的同时,我们也注意到,很多用户的支付环境,其实是在弱网环境中的。 大家知道,前端能够服务用户的前提是 JavaScript 和 CSS 等静态资源能够正确加载。如果网络环境恶劣,那么我们的静态资源尺寸越大,用户下载失败的概率就越高。 根据我们的数据统计,我们的业务中有2%的用户流失与资源加载有关。因此每次更新的代价越小、加载成功率越高,用户流失率也就会越低,从而就能够变相提高订单的转化率。 作为一个发版频繁的业务,要降低发版的影响,可以做两方面优化: 更高效地使用缓存,减少静态资...阅读全文

博文 2020-04-25 01:32:52 夜空_b36c

go encoding/json 介绍

由于我一直是一名前端工程师,所以我会在前端的角度将js中的json操作和go中的操作做一个类比方便大家的理解。 将字符串转换为对象 js : JSON.parse(`{"name":"cfl"}`)go : json.Unmarshal jsonStr := `{ "name":"cfl", "age":10, "friend":[{"name":"sx", "age":10 }] }` type User struct { Name string Age int64 Friend []User } var cfl User json.Unmarshal([]byte(jsonStr), &cfl) fmt.Printf("%+v", cfl) 将对象转换为json js: JSON.str...阅读全文

博文 2019-11-17 20:32:42 曹飞龙

golang 学习笔记 1.6 字符串

1.6 字符串 字符串是不可变值类型,内部用指针指向 UTF-8 字节数组。 默认值是空字符串 ""。 用索引号访问某字节,如 s[i]。 不能用序号获取字节元素指针,&s[i] 非法。 不可变类型,无法修改字节数组。 字节数组尾部不包含 NULL。 struct String { byte* str; intgo len; }; 使用索引号访问字符 (byte)。 s := "abc" println(s[0] == '\x61', s[1] == 'b', s[2] == 0x63) //输出: true true true 使用 " ` " 定义不做转义处理的原始字符串,支持跨行。 s := `a b\r\n\x00 c` println(s) // 输出: a b\r\n\x00 c...阅读全文

博文 2019-03-22 05:34:40 Diogoxiang

Golang的数据类型

基本数据类型整型:1.按长度:int8(-128-127)、int16、int32、int642.无符号整型:uint8(0-255)、uint16、uint32、uint64特殊整型:int: 32位操作系统上就是int32,64位操作系统上就是int64uint: 32位操作系统上就是uint32,64位操作系统上就是uint64浮点型:float32 float64复数类型:complex64和complex128布尔类型:bool字符串:stringbyte类型和rune类型byte 和 run...阅读全文

博文 2020-05-13 16:32:54 lghCode

golang控制结构

1. if结构 概念:if是用于测试某个条件的语句,如果该条件成立,则会执行if后面由大括号包裹的代码块,否则就会忽略该代码块继续执行后面的语句 其格式如下 if condition { // statement } 2. if-else结构 如果有两个分支就可以在if条件语句的基础上添加else语句 其格式如下 if condition { // statement } else { // statement } 3. 多重if-else结构 多重if-else的格式如下 if condition { // statement } else if condition { // statement } else { // statement } 4. switch结构 switch分支结构如...阅读全文

博文 2019-04-02 23:34:38 孤风追影

表示数值的字符串

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"及"-1E-16"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。 思路 可以先整理出数字中所有异常的元素,分别为'.','-','+','E',‘e’。 再整理出特殊一些的用例,例如'.3',‘.e3’,'3.14e3',‘3.’等等。 可以将数字分为特殊元素,以及有符号整数和无符号整数的组合。 有符号数之后,必须为无符号数,例如‘-+3’是不合法的 小数点之后,必须为无符号整数,例如'3.-5'是不合法的 'e'或者‘E’之后,必须为整数,例如'3E-3.5'是不合法的 可以定义一个指针,...阅读全文

博文 2020-03-14 21:32:46 youzhihua

你的DevOps中有完善的持续交付体系么?

背景:DevOps已经成为软件开发领域一个炙手可热的名词。敏捷开发、持续交付、CI/CD,K8s…这些主流的开发理念、工具无一例外都与DevOps有着很强的联系。这种环境影响下,传统的运维团队均开始向DevOps进行转型。一时之间运维开发、SRE、工程效能工程师需求量大增,无论公司大小,都会开始着手DevOps的从0到1的建设。我们开始搭建工具链、部署流水线、集成自动化测试工具、开发自动化发布系统……一切的一切都是为了完善我们自动化体系,从而提高开发效率,优化产品质量。那么问题来了,你团队所建设的DevOps体系,已经是完善的DevOps了么?正文:我们如何去评估目前DevOps中持续交付的建设情况呢,这里笔者总结了一些我们在DevOps初期应该进行的一些工作,这些工作大多数属于工具链的集成...阅读全文

博文 2020-03-06 19:17:38 JFrogChina

左旋转字符串

题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 思路 1.这道题可以在n的索引位置做分割,将分割所得的前半部分与后半部分反向拼接即可。 Java代码实现 class Solution { public String reverseLeftWords(String s, int n) { return s.substring(n)+s.substring(0,n); } } Golang代码实现 func reverseLeftWords(s string, n int) string { frontStr := s[n:] be...阅读全文

博文 2020-03-04 10:32:56 youzhihua

安全组规则批量添加授权对象

摘要: 安全组规则如何批量开通常用端口?如何批量对网段授权?本篇将向您介绍ECS控制台中,针对日常维护安全组规则这个典型场景进行的优化改动。 背景 在日常维护安全组时,常见的场景有以下2种: 1.对某个端口范围批量授权多个网段,如:(如:22端口对10.0.0.1/32,10.0.0.2/32,10.0.0.3/32三个网段授权)。 2.对某个网段,批量开通多个端口,如:对10.x.x.xx/16 网段开通22、80、443等端口)。 ECS控制台针对这两个场景,分别提供了两个功能,【添加安全组规则】,解决场景1的问题;【快速创建规则】,解决场景2的问题。之所以没有将两个功能合并,是考虑到在一次操作中同时批量开通多个端口,并对多个网段进行授权,创建出的安全组规则会是一个m ...阅读全文

golang之Json

1. json字符串解析: json.Unmarshal(b, &f) json字符串解析到结构体中: package main import ( "encoding/json" "fmt" ) type Server struct { ServerName string ServerIP string } type Serverslice struct { Servers []Server } func main() { var s Serverslice str := `{"servers":[{"serverName":"Shanghai_VPN","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0...阅读全文

博文 2019-10-14 20:33:34 aside section ._1OhGeD

【Golang语言】LeetCode 1002. Find Common Characters

Given an array A of strings made only from lowercase letters, return a list of all characters that show up in all strings within the list (including duplicates). For example, if a character occurs 3 times in all strings but not 4 times, you need to include that character three times in the final answer. 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字...阅读全文

博文 2019-08-25 00:33:27 努力的C

第一个只出现一次的字符

题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路 先将字符串遍历一次,使用map存储每个字符出现的次数。 再将字符串遍历一次,若当前字符在map中对应的次数是1,即为正确答案。 若出了两次循环,说明没有正确答案,返回-1即可。 Java代码实现 public class Solution { public int FirstNotRepeatingChar(String str) { Map charMap = new HashMap<>(); for (int i = 0; i < str.length(); i++) { char c...阅读全文

博文 2020-01-19 23:32:46 youzhihua

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 控制语句是程序的灵魂,有了它们程序才能完成各种逻辑,今天我们就来学习 Go 中的各种控制语句。 通过本文的学习你将掌握以下知识: if 条件语句 for 循环语句 switch 语句 defer 延迟调用 if 条件语句 与大多数编程语言一样,if 用于条件判断,当条件表达式 expr 为...阅读全文

博文 2020-06-03 00:32:44 柠檬橙1024

Go语言的strings包字符串处理二之字符串操作函数

Containsfunc Contains(s, substr string) bool功能:字符串s中是否包含substr,返回bool值 示例代码: fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood", "bar")) fmt.Println(strings.Contains("seafood", "")) fmt.Println(strings.Contains("", "")) //运行结果: //true //false //true //true Joinfunc Join(a []string, sep string) string功能:字符串链接,把sli...阅读全文

博文 2018-10-06 17:35:09 ck_god

GoLang 学习笔记 - 循环语句

GoLang 中的循环语句只有 for 循环,没有像 C 语言中那样的 while 、do ...while 循环,但是可以改变写法实现 do ...while 循环。   GoLang 循环语句的语法: // 和 C 语言的 for 一样 for init; condition; post { // .... } init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; post: 一般为赋值表达式,给控制变量增量或减量。 for 语句执行过程如下:   1. 执行 init 赋值表达式.   2. 检查控制变量是否满足 condition 的条件,若其值为 true ,则执行循环体内语句,然后执行 post,进入下一次循环,再检查 c...阅读全文

Go语言学习(二):字符串

在Go中字符串作为内建类型,和C语言是不一样的。C中没有字符串类型, 所有需要通过字符数组来表示字符串,并以指针来传递。在Go中字符串是一个定长字符数组,所以当其创建之后就无法直接改变了。1、错误的字符串长度的获取: 从字符串字面值看len(s)的结果应该是7,但在Golang中string类型的底层是通过byte数组实现的,在unicode编码中,中文字符占两个字节,而在utf-8编码中,中文字符占三个字节而Golang的默认编码正是utf-8.2、正确的字符串长度获取: 那么问题来了,rune[ ]是个啥?有时需要将一个类型转换为另一个类型。在 Go 中可以做到,不过有一些规则。首先,将一个值转换为另一个是由操作符(看起来像函数:byte())完成的,并且不是所有的转换都是允许的。Go语...阅读全文

博文 2020-02-20 19:32:49 算命的Chalk

go项目结构怎样?学习go语言怎么样?

都说go语言比较火,都开始学习go语言编程,那么go语言项目结构是怎样的?我们在学go语言时应该注意什么呢? 在进行Go语言开发的时候,我们的代码总是会保存在$GOPATH/src目录下。在工程经过go build、go install或go get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src目录下,产生的二进制可执行文件放在$GOPATH/bin目录下,生成的中间缓存文件会被保存在$GOPATH/pkg 下。 如果我们使用版本管理工具(Version Control System,VCS,常用如Git)来管理我们的项目代码时,我们只需要添加$GOPATH/src目录的源代码即可。bin 和pkg 目录的内容无需版本控制。 Go语言中也是通过包来组织代码文件,我们可以引用...阅读全文

博文 2019-11-12 17:31:42 zhouzhou2018

[译] Go 语言概览

文地址:A bird's eye view of Go 原文作者:Axel Wagner 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:JackEggie 校对者:40m41h42t, JalanJiang Go 语言概览 本文摘要:本文非常笼统地总结了 Go 语言的定义、生态系统和实现方式,也尽力给出了与不同的需求所对应的参考文档,详情参见本文末尾。 每当我们说起“Go 语言”的时候,可能会因为场景的不同聊到很多完全不同的东西。因此,我尝试着对 Go 语言和其生态系统做一个概述,并在各部分内容中都列出相关的文档(这可能有点像是大杂烩,其中还包含了我最近实际遇到的许多问题)。让我们开始吧: Go 编程语言 Go 语言是一种编程语言。作为一种权威,...阅读全文

博文 2019-07-25 02:04:28 JackEggie

LeetCode|344. 反转字符串

题目描述 等级: 简单 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例2: 输入:["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"] 思路 对于数组与指针的考察。数组中字符的反转,就是首尾调换位置,使用连个指针极好。 答案 func reverseString(s []byte) { for i, j := 0,...阅读全文

博文 2019-12-06 11:32:42 clawhub

leetcode_13

Golang: 思路: 首先,用一个map来存储字母和对应的数值,然后依次读取字符串里的字符,然后去map里寻值。根据规则,我们在对s的第i位取值时需要考虑第i+1位的情况 func romanToInt(s string) int{ res:=0 r2i:= map[byte]int{'I': 1, 'V': 5,'X':10,'L':50,'C':100,'D':500,'M':1000} for i:=0; i阅读全文

博文 2020-01-21 17:32:40 淳属虚构

Go语言笔记 | 06-基本类型

布尔类型 bool 布尔类型的值只能是常量 true 或者 false。 var b bool = true var c = false 布尔类型和数字 0,1 不能直接转换,必须通过编程实现,if 和 for 语句的条件部分都是布尔类型。 // btoi returns 1 if b is true and 0 if false. func btoi(b bool) int { if b { return 1 } return 0 } 整数类型 golang 提供了多种大小的整数类型,也区分了有符号数和无符号数。 几种确定范围的整数类型: uint8 8-bit 0 to 255 uint16 16-bit 0 to 65535 uint32 32-bit 0 to 4294967295 ...阅读全文

博文 2019-03-01 12:34:42 jianggushi

Golang之控制语句

if条件判断 package main //if 条件判断 import "fmt" func main (){ age := 19 if age > 18{ fmt.Printf("澳门线上赌场开业啦") }else if age<18 && age>0{ fmt.Printf("快去上网课吧!!") }else{ fmt.Printf("error!") } } 复制代码for循环 在Go语言中,只有for循环,没有C语言中的while循环。 break 和continue可以改变控制流, break表示从当前循环跳出,结束循环。 continue表示跳过此次循环,进行下一次循环。 for循环包括两种: ​ 1.类似C语言中的循环 需要注意的是,必须将{与for循环的末尾放在同一行。否则...阅读全文

博文 2020-04-09 11:34:57 南风古灶

Golang之go module开发系列二--使用伪版本和GoCenter

Go模块已经为Go开发带来了秩序,但也存在一些潜在的混乱。管理模块尤其是伪版本可能很困难,尤其是在要进行一些最新更改的情况下。 JFrog GoCenter是一个免费的版本话棋模块仓库,现在它包含了一些重要的更新,可以帮助你坚持这个最佳实践。首先让我们看看伪版本是如何工作的,以及您可以期望从这些更改中得到什么。我们还提供了一些指导,让您在升级到1.13或更高版本时保持Go的构建工作。 Go 的模块版本化 对Go模块进行版本化是一个关键特性,它为开发人员提供了一种方法来确保他们的应用程序使用他们想要的依赖项。在对模块进行版本控制时,应用程序可以指定依赖的模块版本,因为我们知道模块版本与其他组件运行时兼容问题。 Go模块版本是通过在底层源存储库中标记其修订来分配的。go命令使用标准形式vX.Y....阅读全文

博文 2020-04-25 04:33:13 JFrog中国

leetcode_599

Golang: 思路:用了两个map,时间复杂度还行,但空间复杂度可太高了,第一个map存放长度更长的列表,第二个map去存储索引最小的字符串集合。代码还是有些复杂的,而且空间复杂度太低了,不推荐。 代码如下: func findRestaurant(list1 []string, list2 []string) []string { if len(list1)==0||len(list2)==0{ return nil } minsum:=-1 dic:=make(map[string]int) minress:=make(map[int][]string) var longl,shortl []string if len(list1)>len(list2) { longl,shortl=...阅读全文

博文 2020-02-11 16:33:04 淳属虚构

让我们一起啃算法----无重复字符的最长子串

无重复字符的最长子串 这是 LeetCode 第三题,题干如下: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。来源:力扣 解题思路 常规思路:两层循环字符串,并且我们需要一个 Map字典 来标记哪些字符已经出现过,流程如下: GO语言的代码实现: func ...阅读全文

博文 2020-04-23 12:32:46 三斤和他的朋友们

Golang之go module开发系列二--使用伪版本和GoCenter

Go模块已经为Go开发带来了秩序,但也存在一些潜在的混乱。管理模块尤其是伪版本可能很困难,尤其是在要进行一些最新更改的情况下。JFrog GoCenter是一个免费的版本话棋模块仓库,现在它包含了一些重要的更新,可以帮助你坚持这个最佳实践。首先让我们看看伪版本是如何工作的,以及您可以期望从这些更改中得到什么。我们还提供了一些指导,让您在升级到1.13或更高版本时保持Go的构建工作。Go 的模块版本化对Go模块进行版本化是一个关键特性,它为开发人员提供了一种方法来确保他们的应用程序使用他们想要的依赖项。在对模块进行版本控制时,应用程序可以指定依赖的模块版本,因为我们知道模块版本与其他组件运行时兼容问题。Go模块版本是通过在底层源存储库中标记其修订来分配的。go命令使用标准形式vX.Y.Z的语义...阅读全文

博文 2020-04-25 01:32:56 JFrog杰蛙科技

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ” 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 控制语句是程序的灵魂,有了它们程序才能完成各种逻辑,今天我们就来学习 Go 中的各种控制语句。 通过本文的学习你将掌握以下知识: if 条件语句for 循环语句switch 语句defer 延迟调用 if 条件语句 与大多数编程语言一样,if 用于条件判断,当条件表达式 expr ...阅读全文

博文 2020-06-03 01:34:22 柠檬橙

golang控制结构

go中只有一种循环控制结构, for。 没有do或while循环。 Go的循环有三种形式,只有其中的一种使用分号 for init; condition;post { } //普通的循环 sum := 0 for i := 0; i < 10; i++ { sum += i } for condition {} //和while一样 for {} //死循环 break和continue break可提前退出循环,终止当前的循环, 也可在break后指定标签, 用标签决定哪个循环被终止 //break可提前退出循环,终止当前的循环 for i := 0 ; i < 10 ; i++ { i f i > 5 { break 终止这个循环,只打印 0 到 5 } println(i) } //当...阅读全文

博文 2019-12-30 16:32:45 程序小白菜

Golang 基础数据类型(一)

基础数据类型 在Go语言中,数据类型用于声明函数与变量、常量数据的类型,声明何种数据类型主要是为了提高内存的利用率,因为不同的数据类型在内存所需要的空间大小是不一样的。 Golang内置基础数据类型如下表所示: 数据类型名称 类型和描述 boolean 布尔型,值可以是常量true或false int&uint 带符号和无符号两种整型。int8,int16,int32(rune),int64和uint8(byte),uint16,uint32,uint64。uintptr类型在指针小节中单独介绍。 float32&float64 Golang没有float这种类型,只有float32和float64两种类型 complex64&complex128 复数类型,complex64包含float...阅读全文

leetcode_1221

Golang: 思路:这题题意有点问题,输入也不是平衡字符串,对输出也有要求。简单来说,定义一个sum=0,从0开始往下走,找到一个平衡字符串,sum+1。然后从剩下的字符串里继续走,直到找完整个字符串为止。 代码如下: func balancedStringSplit(s string) int { i:=0 count:=0 sum:=0 for i<=len(s)-1{ if s[i]=='L'{ sum++ }else{ sum-- } if sum==0 { count++ } i++ } return count ...阅读全文

博文 2020-02-14 00:32:56 淳属虚构

leetcode_7

Golang: 思路: 将给的数字转换为字符串,再对字符串做反转处理,再将它变回字符串 见leetcode_9中的做法(更加简洁) 注意:这里要注意反转后的数字超过int的最大值而出现溢出,但go好像不需要注意这个 func reverse(x int) int { s:=strconv.Itoa(x) sBytes:=[]byte(s) var i int j:=len(sBytes)-1 if sBytes[0]=='-' { i=1 } for ;i2147483647||res<(-...阅读全文

博文 2020-01-11 06:32:50 淳属虚构

[Go - Basic] 基本变量类型转换

数字转字符串 import "strconv" int -> string strconv.Itoa(i int) string int64 -> string strconv.FormatInt(i int64, base int) string base = 10 字符串转数字 import "strconv" string -> int strconv.Atoi(s string) (int, error) string -> int64 strconv.ParseInt(s string, base int, bitSize int) (i int64, err error) base = 10 bitSize = 6...阅读全文

leetcode_541

Golang: 思路:暴力算法 代码如下: func reverseStr(s string, k int) string { if len(s)<=1 { return s } bytes := []byte(s) reverseBytes(bytes,0,k) return string(bytes) } func reverseBytes(arr []byte,i int,k int) { j:=k-1+i //剩余字符串小于k if j>len(arr)-1 { j=len(arr)-1 swapBytes(arr,i,j) return } //剩余字符串大于k小于等于2k if j+k>=len(arr)-1 { swapBytes(arr,i,j) return }else {...阅读全文

博文 2020-02-01 03:32:56 淳属虚构

leetcode_409

Golang: 思路:这题就是套了个回文串的壳子,实际上呢,就是找到字符串里所有成对字母的数量,然后,如果有落单的,这个数目就加1。 实现:我用了个长度为52的数组存储所有单词的数目,然后统一处理,求出上文提到的数目。 代码如下: func longestPalindrome(s string) int { if len(s)<=1 { return len(s) } temp:=make([]int,52) for _,v:=range s{ if v>=97 { temp[v-97]++ }else{ temp[v-39]++ } } f,sum:=0,0 for i:=0; i< len(temp); i++ { sum=sum+temp[i] if f==0 { if temp[i]...阅读全文

博文 2020-01-30 21:32:47 淳属虚构

图解kubernetes批处理Job控制器的关键设计

K8s中的批处理任务模块主要是由Job控制器完成,今天我们就来关注下其底层的关键设计,包括完成状态、并行模式、并行策略等关键机制 1. 基础概念 在聊k8s的任务模块的实现的时候,我们先看一下传统的任务系统的设计与实现,然后聊下基于k8s的基础的概念 1.1 传统的任务系统设计 传统的任务系统设计主要可以分为master(任务分配/故障感知/负载均衡)、Worker(任务执行/任务监控/任务管理)、分布式协调(etcd等存储元数据)、任务仓库(存储任务的实现比如类或者接口)等几部分, 从大的部分又可以切分为两个部分管控端(分布式协调/master/仓库)、执行端(Worker),传统的任务系统大概就是这样 通常复杂的就是如何在master如何做任务的负载均衡、任务的快速完成、依赖等管控功能,...阅读全文

leetcode_49

Golang: 思路:对所有字符串处理(排序),字母异位词必然会有同一排列。 代码如下: type Bytes []byte func (b Bytes) Len() int { return len(b) } func (b Bytes) Less(i, j int) bool { return b[i] < b[j] } func (b Bytes) Swap(i, j int) { b[i], b[j] = b[j], b[i] } func groupAnagrams(strs []string) [][]string { mp:=make(map[string][]string) for _,v:=range strs{ bytes:=[]byte(v) sort.Sort(Byt...阅读全文

博文 2020-03-19 15:33:55 淳属虚构

leetcode_811

Golang: 思路:这题是字符串处理吧,没啥好说的,但是这里我的代码需要精简一下,Count函数那里,有多余的时间复杂度。 代码如下: func subdomainVisits(cpdomains []string) []string { mp:=make(map[string]int) for _,v:=range cpdomains{ flds:=strings.Fields(v) count,_:=strconv.Atoi(flds[0]) mp[flds[1]]+=count temp:=flds[1] for strings.Count(temp,".")>0 { temp=temp[strings.Index(temp,".")+1:] mp[temp]+=count } } ...阅读全文

博文 2020-02-27 07:32:39 淳属虚构

leetcode_68

Golang: 思路:刚开始看题会觉得有些麻烦,但实际上,也没啥技巧,就是处理字符串 代码如下: func fullJustify(words []string, maxWidth int) []string { var wordlist []string var res []string j,length:=0,0 for jmaxWidth{ //结束,处理wordlist handleWordList(wordlist...阅读全文

博文 2020-03-23 19:32:47 淳属虚构

leetcode_819

Golang: 思路:这题的难点也在字符串的处理,但大部分的语言都提供类似的函数了,如果我们想提取字符串里的所有单词,使用正则是很好的途径,自己去分割字符串,处理标点符号,反而没什么意思。 代码如下: func mostCommonWord(paragraph string, banned []string) string { reg:=regexp.MustCompile("\\w+") mp1,mp2:=make(map[string]int),make(map[string]int) for _,v:=range banned{ mp1[v]=1 } if reg!=nil { strs:=reg.FindAllString(paragraph,-1) for _,v:=range s...阅读全文

博文 2020-02-27 09:32:41 淳属虚构

leetcode_1002

Golang: 思路:每个字符串进行比较即可 代码如下: func commonChars(A []string) []string { arr1:=make([]int,26) for k,w:=range A{ arr2:=make([]int,26) for _,b:=range w{ arr2[b-'a']++ } if k==0{ copy(arr1,arr2) }else{ for k,_:=range arr1{ arr1[k]=min(arr1[k],arr2[k]) } } } var res []string for k,v:=range arr1{ for i:=0;i阅读全文

博文 2020-04-15 09:32:45 淳属虚构