簡體   English   中英

Golang:Go中的函數式編程

[英]Golang : functional programming in Go

我嘗試過在Javascript中做過的事情。 但它說http://play.golang.org/p/qlWLI03Dnl

    package main

    import "fmt"
    import "regexp"
    import "strings"

    func swapit(str string) string {
        var validID = regexp.MustCompile(`[a-z]|[A-Z]`)
        return validID.ReplaceAllString(str, func(${0}, ${1}, ${2}) string {
                return (${1}) ? strings.ToUpper(${0}) : strings.ToLower(${0})
            })

    }

    func main() {
        fmt.Println(swapit("hello wOrld."))
        // HELLO WoRLD.

    }

我也試過這個刪除? :語法但仍然無效。 http://play.golang.org/p/mD6_78zzo1

真的不支持這個嗎? 我是否只是放棄並強迫每個角色改變案件?

非常感謝

正如@James Henstridge已經指出的那樣,您的代碼存在多個問題。 這個答案不會關注錯誤,而是解決問題的不同方式。

如果你的目的是學習在Go中使用regexp,我的這個答案是無用的。
如果您的目標是學習如何制作交換案例的功能,那么我建議使用unicode包而不使用regexp的解決方案:

package main

import (
    "bytes"
    "fmt"
    "unicode"
)

func SwapCase(str string) string {
    b := new(bytes.Buffer)

    for _, r := range str {
        if unicode.IsUpper(r) {
            b.WriteRune(unicode.ToLower(r))
        } else {
            b.WriteRune(unicode.ToUpper(r))
        }
    }

    return b.String()
}

func main() {
    fmt.Println(SwapCase("Hej värLDen."))
}

輸出:

hJJVÄRldEN。

操場

此解決方案也將處理所有非AZ字符,例如ö-Ö和å-Å。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM