いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-294 (strings.TrimRight と strings.TrimSuffix のちょっとした違い)

類似記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。何気に分かってなかったので忘れないうちにメモメモ。。。

stringsパッケージには TrimRightTrimSuffix という2つの関数があります。( TrimLeftTrimPrefix も同様 )

この2つ、やってることが凄く似ていて、文字列の右側をトリムしてくれます。

ですが、少し動きが違います。

試してみる

$ go version
go version go1.20.1 linux/amd64
package strs

import (
    "strings"

    "github.com/devlights/gomy/output"
)

// DiffTrimRightAndTrimSuffix は、strings.TrimRight と strings.TrimSuffix のちょっとした違いについてのサンプルです.
//
// TrimRight は、第二引数が cutset となっている通り、切り取る対象の「セット」を指定している。
// なので、セット内に存在する文字であるかどうかで判定される。
//
// TrimSuffix は、第二引数が suffix となっている通り、指定した suffix に一致するかどうかが判定される。
// なので、指定した suffix に完全一致しないと除去されない。
//
// # REFERENCES
//   - https://pkg.go.dev/strings@go1.20.1#TrimRight
//   - https://pkg.go.dev/strings@go1.20.1#TrimSuffix
func DiffTrimRightAndTrimSuffix() error {
    var (
        str = "こんにちわ世界xox"
    )

    output.Stdoutl("[TrimRight ]", strings.TrimRight(str, "xo"))
    output.Stdoutl("[TrimSuffix]", strings.TrimSuffix(str, "xo"))

    return nil
}

実行すると以下のようになります。

gitpod /workspace/try-golang (master) $ task
task: [run] go run . -onetime

ENTER EXAMPLE NAME: string_diff_trimright_trimsuffix

[Name] "string_diff_trimright_trimsuffix"
[TrimRight ]         こんにちわ世界
[TrimSuffix]         こんにちわ世界xox


[Elapsed] 8.22µs

結果の通りですが、TrimRightは指定した対象文字セットに含まれているかどうかで判定されて、TrimSuffixは指定した対象文字列に一致するかどうかで判定されます。

参考情報

Goのおすすめ書籍

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。