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

    Go(3)

    } 第二种: ceshi :=[5]int{1,3,4,5} 第三种 var b = [5]int{1,3} 第四种(当不可知长度的时候使用 ...) 写法:变量[长度]类型 = [长度]类型[值] 数组赋值:指定下标来指定元素赋值 %#以go的方式打印 var d [5]string = [5]string{1:"abc",4:"zcq"} //%#   以go的方式打印!!! j:=0;i<2;j++{          fmt.Printf("%d",a[i][j])       }       fmt.Println()    } } 数组赋值:随机数字放入数组 切记:go r.Int()       //取值操作       fmt.Printf("%d\n",five[i])    }    fmt.Printf("%d\n",five) } 数组赋值:随机字符串放入数组 go

    47210发布于 2020-01-09
  • 来自专栏余生开发

    go语言面试题

    ⽐如 map,slice 可以参考⽤reflect.DeepEqual⽅法来进⾏⽐较 3.string与nil类型的问题 nil空值的赋值 空值, 空指针,所有Golang中的引⽤类型都可以⽤nil进⾏ (3)全局区 静态全局变量区 全局变量的开辟是在程序在main之前就已经放在内存中。⽽且对 外完全可⻅。 s1 = append(s1, s2...) (3)slice中new的使⽤问题 make只⽤于slice、map以及channel的初始化(⾮零值);make返回的还是这三个引⽤类型本身; ⽽new⽤ 3、有⽗类指针指向⼦类的具体对象 如果People是⼀个interface类型 var peo People = Stduent{} 错误的 var peo People = &Student{} 正确的 image (3)interface{} 和 *interface{} *interface{}本身不是万能指针, 就是eface结构体的地址。

    1.3K40发布于 2020-12-31
  • 来自专栏python3

    Go(3)

    切片初始化:     var b[]int = []int{1,2,3,4,5} 切片底层都是数组 切片是一个指针类型,应用类型,是数组的引用!!!     var a [5]int     var b[]int = a[0:2]       b是切片     伪代码定义:     a[start:end] 示例 示例一: 循环数组 时刻记住go  [1 2 3 0 0 0 0 0 0 0] 10 切片Append: 定义切片: s3 :=[]int{1,2,3} s4:=append(s3,3,4,5,6) 数组 / 切片 中的 ... var c  = [...]int{1,3,4}    fmt.Println(c) } 切片: 2个切片的append //... 就是展开切片的意思 a = make([]int,5) var b[] = []int{1,3,6,10} a = append(a,b...)

    41510发布于 2020-01-06
  • 来自专栏Lemon黄

    Go 基础面试题

    本文是 Go 基础常见面试题,结合ChatGPT的详细解释版,全背是不可能,假如面试碰上了,挑出要点用自己的语言回答就好了。 1. 与其他语言相比,Go 语言的优点有哪些? 函数:Go 语言中的函数也是一种数据类型,可以赋值给变量,可以作为参数传递,也可以作为返回值。 3. Go 程序中的包是什么? 数组的长度是其类型的一部分(例如,[3]int和[5]int是不同的类型)。 切片(Slice):动态大小,可以按需增长或收缩。切片是对数组的一个抽象,提供了更加强大和灵活的接口。 示例: func modifyArray(a [3]int) { a[0] = 50 } func main() { arr := [3]int{1, 2, 3} modifyArray (arr) fmt.Println(arr) // 输出 [1 2 3],原始数组不变 } 在上面的例子中,modifyArray里的修改不会影响main函数中的arr。

    85410编辑于 2023-12-06
  • 来自专栏Lemon黄

    Go 并发编程面试题

    Mutex 几种状态 在 Go 语言的同步库中,sync.Mutex是用来提供互斥锁的基本同步原语。 互斥锁在内部状态实现可能因 Go 语言的不同版本而有所不同。 Go 的 Mutex 设计尝试确保公平性,避免长时间等待的 goroutine 处于饥饿状态。 Go 语言团队不断优化sync.Mutex,以找到公平和效率之间的平衡点。有关 sync.Mutex 的更多权威信息,建议查看最新的 Go 语言源码和文档。 3. 需要注意的是,在实现细节方面,Go 的标准库不提供关于互斥锁内部行为的具体参数。自旋的逻辑和上述条件可能在 Go 不同的版本之间有所变化,以上内容主要基于 Go 语言当前和之前版本的实现。

    1.3K10编辑于 2023-12-13
  • 来自专栏十二的树洞

    go面试题目收集

    sliceOne[2:4] 这种方式是基于其他切片或数据创建容量,长度为创建切片是指定的结束-起始位置, = 4-2=2;容量就等于切片的容量-起始位置=10-2=8.且两个切片共享同一个数据区; (3) 字面量方式创建 hash := map[string]int{ "1": 2, "3": 4, "5": 6, } map解决冲突的方法 使用链地址法:当多个键被哈希到了同一个bucket时,也就是产生了哈希冲突 数组的长度是数组类型的一部分,所以[3]int 和 [4]int 是两种不同的数组类型。 切片不需要指定大小; 切片是地址传递; 切片可以通过数组来初始化,也可以通过内置函数make()初始化.初始化时len=cap,在追加元素时如果容量cap不足时将按len的2倍扩容 (3) ,但不阻止读 (3) RWMutex在写锁占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该goroutine独占 channel特性 A.

    97352编辑于 2021-12-24
  • 来自专栏mousemin

    Go 语言笔试面试题

    Go 语言笔试面试题 日常收集的题 一. 基础语法 1 = 和 := 的区别? 答案 := 声明+赋值 = 仅赋值 1var a int 2a = 10 3// 等价于 4a := 10 2 Go 有异常类型吗? 答案 Go 没有异常类型,只有错误类型(Error),通常使用返回值来表示异常状态。 1f, err := os.Open("/tmp/a.txt") 2if err ! = nil { 3 log.Fatal(err) 4} 二. 6 var y int = M 7 fmt.Println(x, y) 8} 答案 编译失败:cannot use M (type int32) as type int in assignment Go

    60730编辑于 2023-06-10
  • 来自专栏python3

    Go语言3

    和 空格, // 所以会把字符串 s 两边的这两个字符都去掉,直到遇到这两个字符以外的字符为止 /* 运行结果: H:\Go\src\go_dev\day3\strings>go run test_trim.go \src\go_dev\day3\time>go run time_info.go 2018 October 7 H:\Go\src\go_dev\day3\time> */ 时间格式化 用(Time 纳秒 H:\Go\src\go_dev\day3\time> */ 做单位换算的时候,需要注意数据类型。 \src\go_dev\day3\pointer>go run check_pointer.go 变量a的地址: 0xc04204e058 通过p拿到a的值: 5 a现在的值是: 100 H:\Go\ \src\go_dev\day3\function>go run defer_demo.go 22 1 H:\Go\src\go_dev\day3\function> */ 用途 关闭文件句柄 操作前给资源上锁

    73610发布于 2020-01-07
  • 来自专栏python3

    Go语言】【3GO语言常量

    还有复数常量,如3+2i 二、常量 和其它语言(C、C++、Java等)类似,由const关键字修饰,例如: const PI float64 = 3.1415926535897932 const EluerE " const rect = 3 + 2i const area = 3.1415 + 3.6i 每个常量定义都要写一次const,是否能省略掉const? language", 3 + 2i, 3.1415 + 3.6i ) 三、常量特点说明 1、没有private、protected、public修改符 有过Java开发经验的读者都清楚private、 GO是怎么区分常量/变量是对内还是对外的呢? ,代码想怎么写就怎么写,无论怎么写好像都符合GO的语法。

    2.4K10发布于 2020-01-07
  • 来自专栏Java

    go语言面试题:为什么选择go语言

    选择Go语言的原因: 并发和高并发:Go 语言在设计之初就考虑了并发和高并发方面的问题,将其内置于语言层面上,在编写代码时容易实现并发,提升程序的性能。 高效率:Go 语言的速度非常快(如 C/C++),同时又简单易用(如 Python)。Go 语言通过 Go 语言自身的编译器即可生成本地机器码,无需虚拟机,加快了执行效率。 开发工具丰富:Go语言是开源的,所以有很多优秀的开发工具,例如Goland、Visual Studio Code等。 学习曲线低:Go 语言语法类似于C/C++,容易学习,对于其他编程语言的用户来说更加容易上手。 例如,在高并发的Web应用程序中,Go 语言被广泛应用,如微服务框架、云原生应用开发、区块链等。 Go语言的优秀性能和高可靠性已经在实际应用中得到了验证。

    14710编辑于 2025-01-21
  • 来自专栏Lemon黄

    Go 运行时面试题

    并发简单:Go 语言提供的 goroutines 使并发编程变得更简洁易懂。通过go关键字,开发者可以非常方便地启动新的并发任务。 3. 1.0 之前 GM 调度模型 在 Go 1.0 发布之前的早期版本中,Go 使用的是基本的 GM(Goroutine-Machine)调度模型,而没有我们现在知道的 P 的概念。 需要注意的使,Go 的调度器细节可能随着版本更新而变化,上述描述适用于 1.x 系列的 Go 版本。 5. Go 1.14 版本引入了基于信号的抢占,这标志着 Go 语言实现了抢占式调度的一大步。 8. 升级 Go 版本:Go 团队不断优化 GC 机制。新的 Go 版本可能会带来更优化的 GC 行为,因此保持在最新的稳定版可以使应用受益于这些优化。 在调优之前,了解应用的内存使用模式是很重要的。

    78110编辑于 2023-12-13
  • 来自专栏码农编程进阶笔记

    Go面试必会的面试题

    =nil s3 :=make([]int,0,0) //len(s3)=0,cap(s3)=0,s3! 注意:在go中 var是声明关键字,不会开辟内存空间;使用 := 或者 make 关键字进行初始化时才会开辟内存空间。 我们在go语言中通过 := 赋值引用类型就是 浅拷贝,即拷贝的是内存地址,两个变量对应的是同一个内存地址对应的同一个值 a := []string{1,2,3} b := a 如果我们通过copy a := []string{1,2,3} b := make([]string,len(a),cap(a)) copy(b,a) 八、new和make 一. new 1.new是GO语言一个内置的函数 九、go的map实现排序 我们知道go语言的map类型底层是有hash实现的,是无序的,不支持排序。 如果我们的数据使用map类型存储,如何实现排序呢?

    64722编辑于 2022-12-21
  • 来自专栏Golang语言社区

    实效go编程--3

    Go程 我们称之为Go程是因为现有的术语—线程、协程、进程等等—无法准确传达它的含义。 Go程具有简单的模型:它是与其它Go程并发运行在同一地址空间的函数。 Go程在多线程操作系统上可实现多路复用,因此若一个线程阻塞,比如说等待I/O, 那么其它的线程就会运行。Go程的设计隐藏了线程创建和管理的诸多复杂性。 在函数或方法前添加 go 关键字能够在新的Go程中调用它。当调用完成后, 该Go程也会安静地退出。(效果有点像Unix Shell中的 & 符号,它能让命令在后台运行。) go list.Sort() // 并发运行 list.Sort,无需等它结束。 函数字面在Go程调用中非常有用。 另一种管理资源的好方法就是启动固定数量的 handle Go程,一起从请求信道中读取数据。Go程的数量限制了同时调用 process 的数量。

    1K70发布于 2018-03-26
  • 来自专栏全栈程序员必看

    Java面试题3

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/110115.html原文链接:https://javaforall.cn

    18610编辑于 2022-07-05
  • 来自专栏Java

    go语言面试题go与cpp和java的对比

    Go语言、C++和Java语言是三种性能较好的编程语言,它们在某些方面有不同的优势。下面是一个简单的比较: 内存管理 C++需要手动管理内存,而Java和Go语言使用垃圾回收机制。 Go语言的垃圾回收机制与Java相似,但是Go语言在设计上更加注重高性能和高并发,在实际生产环境中表现也很好。 Java和Go语言在执行速度方面与C++相差不大,但是Go语言在处理高并发方面更加出色,因为Goroutines使Go代码并发执行非常容易。 而Go语言使用Goroutines和Channels来处理并发性,使得Go语言非常适合于高并发场景,简单易用。 如果你需要处理高并发,则选择Go语言。

    20800编辑于 2025-01-21
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(实现原理)

    答案 init() 函数是 Go 程序初始化的一部分。 Go 编译器发现 v 的引用脱离了 foo 的作用域,会将其分配在堆上。因此,main 函数中仍能够正常访问该值。 Q3 2 个 interface 可以比较吗? stu4 StuInt = Stu{"Tom"}, Stu{"Tom"} fmt.Println(stu1 == stu2) // false fmt.Println(stu3 == stu3 和 stu4 对应的类型是 Stu,值是 Stu 结构体,且各字段相等,因此结果为 true。 Q4 两个 nil 可能不相等吗? 答案:可能。 答案 这在 Go 中是安全的,Go 编译器将会对每个局部变量进行逃逸分析。如果发现局部变量的作用域超出该函数,则不会将内存分配在栈上,而是分配在堆上。

    85630编辑于 2022-05-24
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(基础语法)

    例如 var x = 5 var p *int = &x fmt.Printf("x = %d", *p) // x 可以用 *p 访问 Q3 Go 允许多个返回值吗? 例如下面的例子中 语 和 言 使用 UTF-8 编码后各占 3 个 byte,因此 len("Go语言") 等于 8,当然我们也可以将字符串转换为 rune 序列。 //每个中文utf8 编码 占3个byte fmt.Println(len("Go语言")) // 8 fmt.Println(len([]rune("Go语言"))) // 4 Q8 如何判断 map type StuType int32 const ( Type1 StuType = iota Type2 Type3 Type4 ) func main() { fmt.Println(Type1, Type2, Type3, Type4) // 0, 1, 2, 3 } Q16 空 struct{} 的用途 答案 使用空结构体 struct{} 可以节省内存,

    78320编辑于 2022-05-24
  • 来自专栏码农编程进阶笔记

    Go 语言笔试面试题(并发编程)

    例如: func main() { st := time.Now() ch := make(chan bool) go func () { time.Sleep func query() int { ch := make(chan int) for i := 0; i < 1000; i++ { go func() { ch <- url); err == nil { // write to db break } i++ if i >= 3 request(fmt.Sprintf("https://127.0.0.1:8080/%d", i), &wg) } wg.Wait() } Q3 Go 可以限制运行时操作系统线程的数量吗 1 从官方文档的解释可以看到,GOMAXPROCS 限制的是同时执行用户态 Go 代码的操作系统线程的数量,但是对于被系统调用阻塞的线程数量是没有限制的。

    69610编辑于 2022-05-24
  • 来自专栏Java

    go语言面试题:两数之和

    以下是使用go语言实现两数之和的代码,已加上详细注释: package main import "fmt" // twoSum 函数接收一个整形数组 nums 和一个目标值 target,返回满足条件的两个数的索引

    20710编辑于 2025-01-21
  • 来自专栏维C果糖

    Go 语言常见的编程面试题

    文章目录 启动两个协程,交替打印 123456 写一个程序,控制 Goruntine 数量 记录 Go 语言常见的编程面试题。 启动两个协程,交替打印 123456 func main() { // 创建 3 个通道,A、B 和 Exit A := make(chan bool) B := make(chan bool) Exit := make(chan bool) go func() { // 如果 A 通道是 true,则执行 for i := 1; i <= 10 = <-A; ok { fmt.Println("A 输出", i) B <- true } } }() go 控制 Goroutine 数量 func controlGoroutineNum(taskCount int) { // 模拟用户需求的业务数量 ch := make(chan bool, 3)

    56540编辑于 2022-11-28
领券