goとpushの使い分けはルート階層を意識して行う必要があります。
goでは前のルートを破棄してターゲットルートに飛び、pushでは前のルートの上にターゲットルートを追加しナビゲーションスタックを維持します。
そのためpushで画面遷移を行った場合、前のページに戻ることができます。
一方、goではサブルートから上位のルートに戻ることになります。
pushは問題点が多いため出来る限りgoを使用することが推奨されます。
商品検索ページ→個別の商品ページ→カートと遷移する場合に
カートから個別の商品ページに戻りたい場合等にはpushを使った方が便利です。
参考資料