首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go语言的副作用

Go语言的副作用
EN

Stack Overflow用户
提问于 2011-01-29 15:56:24
回答 2查看 533关注 0票数 0

有没有人知道如何用Go语言写一个有副作用的函数?我的意思是像C中的getchar函数。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-01-29 17:20:03

ReadByte函数用于修改缓冲区的状态。

代码语言:javascript
复制
package main

import "fmt"

type Buffer struct {
    b []byte
}

func NewBuffer(b []byte) *Buffer {
    return &Buffer{b}
}

func (buf *Buffer) ReadByte() (b byte, eof bool) {
    if len(buf.b) <= 0 {
        return 0, true
    }
    b = buf.b[0]
    buf.b = buf.b[1:]
    return b, false
}

func main() {
    buf := NewBuffer([]byte{1, 2, 3, 4, 5})
    for b, eof := buf.ReadByte(); !eof; b, eof = buf.ReadByte() {
        fmt.Print(b)
    }
    fmt.Println()
}

Output: 12345
票数 3
EN

Stack Overflow用户

发布于 2011-01-29 16:52:58

在C中,副作用被用来有效地返回多个值。

在Go中,返回多个值是内置于函数规范中的:

代码语言:javascript
复制
func f(a int) (int, int) {
    if a > 0 {
        return a, 1
    }
    return 0,0
}

通过返回多个值,作为函数调用的结果,您可以影响函数外部的任何内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4835778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档